下载JProfile
https://www.ej-technologies.com/download/jprofiler/files
生成.hprof文件
1.java项目启动时加入命令,如果发生内存溢出会将文件导出到 /home/heap.hprof 下
nohup java -jar -XX:+HeapDumpOnOutOfMemoryError -XX:+HeapDumpPath=/home/heap.hprof demo.jar >/dev/null 2>&1 &
2.使用jdk工具dump出文件
jmap -dump:live,format=b,file=heap.hprof PID
分析.hprof文件
1.双击打开生成的hprof文件
2.选择最大对象
3.开始分析问题(这个导出的heap.hprof文件是我用jmap生成的)
因为springboot所有bean对象都存储在DefaultListableBeanFactory里边,所以这个对象会很大,我们就参考这个进行分析
可以看到了,最大对象是springboot的一级缓存