记录用Memory Analyzer分析内存泄漏的解决过程

事故原因:我们的 一个线上项目出现了   java.lang.OutOfMemoryError: GC overhead limit exceeded

                   top 命令发现CPU load average 超过了核心线程数。整个项目属于假死状态。

                  下载   堆栈信息进行分析如下 图所示:

1:打开7个G的文件

记录用Memory Analyzer分析内存泄漏的解决过程_第1张图片

2,如下图所示

记录用Memory Analyzer分析内存泄漏的解决过程_第2张图片

3,打开details进行分析。

记录用Memory Analyzer分析内存泄漏的解决过程_第3张图片

 

4,分析如图所示,可以看到具体没有进行回收的对象是哪个,我的项目是ad_app_business_d_stat_xxxxx。

记录用Memory Analyzer分析内存泄漏的解决过程_第4张图片

 

5,打出现如下图所示,就可看到具体调用哪个方法出现了上图的,对象太多没有进行回收。

记录用Memory Analyzer分析内存泄漏的解决过程_第5张图片

 

6,根据上图的方法找到对应代码,查看代码找到问题是循环这里出现了问题,导致产生了大量对象没有进行回收,然后做相应调整,解决线上的内存泄露问题。

记录用Memory Analyzer分析内存泄漏的解决过程_第6张图片

 

 

 

你可能感兴趣的:(JVM,并发编程系列)