1、利用jps命令或者top命令得到pid
2、获取当前pid的dump文件命令如下
jmap -dump:format=b,file=dump_file_name pid
示例:
jmap -dump:format=b,file=temp.txt 18812
执行命令后得到dump文件
用mat 打开dump文件
其中Histogram 统计各类个数,Dominator Tree 统计对象大小是重要的两个指标;
可以pool-thread-1线程下的 几乎占据堆空间90%
选中右键jave basics 下Thread Details
可以发现代码GCOverHead类32行错误
也可以选中Reports下 Leak Suspects
点击Details
也可以得到相同效果
程序启动时可以配置VM options 当发生oom时,自动dump文件
示例:-Xms1000m -Xmx1000m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=D:\temp.txt