JVM 常见问答题
什么是增量式垃圾收集?
首先, G1的堆内存不再单纯划分为年轻代和老年代, 而是划分为多个( 通常是 2048
个) 可以存放对象的小块堆区域( smaller heap regions) 。
每个小块, 可能一会被定义成 Eden 区, 一会被指定为 Survivor 区或者 Old 区。
这样划分之后, 使得 G1 不必每次都去回收整个堆空间, 而是以增量的方式来进行处
理: 每次只处理一部分内存块, 称为此次 GC 的回收集( collection set) 。
下一次GC时在本次的基础上, 再选定一定的区域来进行回收。 增量式垃圾收集的好处是
大大降低了单次GC暂停的时间。
什么是GC停顿(GC pause)?
STW
因为GC过程中, 有一部分操作需要等所有应用线程都到达安全点, 暂停之后才能执行,
这时候就叫做GC停顿, 或者叫做GC暂停。
如果CPU使用率突然飙升, 你会怎么排查?
缺乏经验的话, 针对当前问题, 往往需要使用不同的工具来收集信息,
例如:
ps ‐ef jps ‐v
free ‐m free ‐h top
收集不同的指标( CPU, 内存, 磁盘IO, 网络等等)
分析应用日志
分析GC日志
获取线程转储并分析
获取堆转储来进行分析
如果CPU使用率突然飙升, 你会怎么排查?
缺乏经验的话, 针对当前问题, 往往需要使用不同的工具来收集信息, 例如:235
ps ‐ef jps ‐v
free ‐m free ‐h top
收集不同的指标( CPU, 内存, 磁盘IO, 网络等等)
分析应用日志
分析GC日志
获取线程转储并分析
获取堆转储来进行分析
系统性能一般怎么衡量?
可量化的3个性能指标:
系统容量: 比如硬件配置, 设计容量;
吞吐量: 最直观的指标是TPS;
响应时间: 也就是系统延迟, 包括服务端延时和网络延迟。
这些指标。 可以具体拓展到单机并发, 总体并发, 数据量, 用户数, 预算成本等等。
使用JMAP转储堆内存大致的参数怎么处理?
jmap ‐dump:format=b,file=3826.hprof 3826