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