1、安装JProfile(本文使用JProfiler11)
自己百度下载一个破解版
2、从服务器上将dump文件拿下来
3、使用JProfile打开(打开比较久,需耐心等待)
4、查看Classes
5、查看Reference,选择一个class或者biggest object
6、查看
7、查看Graph
8、查看代码
该方法主要用来导出数据报表,可以看出,当list数量太大时,就会导致OOM。
TIPS:
生成Dump文件,JVM启动时添加参数:
#出现 OOME 时生成堆 dump:
-XX:+HeapDumpOnOutOfMemoryError
#生成堆文件地址:
-XX:HeapDumpPath=/home/xxx/logs/
linux:
打开/tomcat_home/bin/catalina.sh文件
JAVA_OPTS="$JAVA_OPTS $JSSE_OPTS -server -Xms6144m -Xmx6144m -XX:NewSize=384m -XX:MaxNewSize=450m -XX:PermSize=128m -XX:MaxPermSize=2048m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/home/zyf/logs"
注:其中不设-XX:HeapDumpPath时,dump出的文件在/tomcat_home/bin目录下
windows:
打开/tomcat_home/bin/catalina.bat文件
set JAVA_OPTS=%JAVA_OPTS% -server -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=D:\heapdump