GC 日志怎么看才有用
GC 日志看起来乱,关键是找准几个核心指标。很多开发者面对 GC 日志不知道该关注什么。本文从实际调优经验出发,讲需要关注什么、忽略什么,帮你快速定位问题。
先看现象,不要急着改参数
JVM 问题常见现象有:CPU 飙高、频繁 Full GC、接口变慢、内存溢出。处理时先收集证据:
jps -l |
如果是 CPU 高,把线程 id 转成十六进制后,用 jstack 找对应线程:
printf '%x\n' <tid> |
GC 日志怎么看
不要只看“发生了 GC”,重点看频率、停顿时间、回收前后内存变化。如果每次回收后老年代仍然很高,可能是对象长期被引用,需要继续分析堆。
小白可以怎么练
本地写一个不断往 List 里放对象的 demo,故意触发 OOM,然后用 jmap 导出堆文件,用 MAT 或 VisualVM 看最大对象是谁。练过一次,线上看到类似问题就不会慌。
核心要点
关注 Minor GC 和 Full GC 的频率和耗时
年轻代晋升到老年代的对象大小和频率
GC 前后的内存使用变化
使用 jstat、jmap、jvisualvm 等工具辅助分析
总结
GC 调优是一个持续的过程,没有一劳永逸的方案。需要结合业务特点、数据量、响应时间要求来调整。理解 GC 日志是调优的第一步。