1.查看监控,了解出现问题的时间点以及当前FGC的频率(可对比正常情况看频率是否正常)
2.了解改时间点之前有无程序上线、基础组件升级等情况
3.了解jvm参数设置,包括:堆空间各个区域大小的设置,新生代和老年代分别采用了什么垃圾收集器,然后分析jvm参数设置是否合理
4.再对步骤1中列出的可能原因做排除法,如元空间被打满、内存泄漏、代码显示调用GC方法
5.针对大对象或者生命周期长的对象导致的FGC,可通过jmap -histo 命令结合dump堆内存文件作进一步分析,需要先定位到可疑对象
6.通过可疑对象定位到具体代码再次分析,这时候要结合GC原理和jvm参数设置,弄清楚可疑对象是否满足了进入老年代的条件才能下结论