在项目运行过程中会产生很多的数据,如果这些数据是强引用是不会被垃圾回收器回收的,如果不及时手动清理则会越来越多,造成内存溢出。
在启动时在jvm命令增加内存溢出生成dump文件,这样在内存溢出的时候就会生成内存快照文件,可以通过该文件分析内存情况,找到内存溢出的位置,进行优化。
首先安装:MemoryAnalyzer
打开dump文件
Leak Suspects Report:泄漏嫌疑报告
Component Report:组件报告
Re-open previously run reports:重新打开以前运行的报告
选择Leak Suspects Report,查看可能出现内存泄露的地方;
可以看到内存分析结果是,MainLogicServiceImpl类中有一个HashMap占用内存较多,造成内存泄露;
点击Accumulated Objects by Class in Dominator Tree可以查看该map中的数据
点击查看map中的数据
在overview中点击Dominator Tree查看堆占比