事故原因:我们的 一个线上项目出现了 java.lang.OutOfMemoryError: GC overhead limit exceeded
top 命令发现CPU load average 超过了核心线程数。整个项目属于假死状态。
下载 堆栈信息进行分析如下 图所示:
1:打开7个G的文件
2,如下图所示
3,打开details进行分析。
4,分析如图所示,可以看到具体没有进行回收的对象是哪个,我的项目是ad_app_business_d_stat_xxxxx。
5,打出现如下图所示,就可看到具体调用哪个方法出现了上图的,对象太多没有进行回收。
6,根据上图的方法找到对应代码,查看代码找到问题是循环这里出现了问题,导致产生了大量对象没有进行回收,然后做相应调整,解决线上的内存泄露问题。