重点是堆内存泄露
场景:
排查步骤:
1、通过jmap或设置jvm参数获取堆内存快照dump
使用jmap命令获取运行中程序的dump文件
jmap -dump:format=b,file=heap.hprof pid
使用vm参数获取dump文件
有的情况是内存溢出之后程序则会直接中断,而jmap只能打印在运行中的程序,所以建议通过参数的方式的生成dump文件
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/home/app/dumps/
2、通过工具, VisualVM去分析dump文件,VisualVM可以加载离线的dump文件
文件–>装入—>选择dump文件即可查看堆快照信息
3、通过查看堆信息的情况,可以大概定位内存溢出是哪行代码出了问题
4、找到对应的代码,通过阅读上下文的情况,进行修复即可