1.首先,java程序啓動在linux,怎麼生成dump文件?
1》第一步,首先你需要得到java程序的PID,最簡單的方法使用如下命令
ps -ef|grep java
或者如果是docker啓動的 springboot服務,也可以使用本命令:
2》在任意位置,執行jmap命令,生成dump文件
jmap -dump:format=b,file=serviceDump.dat 953539
jmap -dump:format=b,file=serviceDump.dat [java進程的PID]
可以看到,生成的dump文件叫:serviceDump.dat
生成文件的位置在:/backup/tomcat7/conf/serviceDump.dat
3》你可以將這個dat文件,通過xftp工具,拉取到你的本地
2.JVM參數-XX:+HeapDumpOnOutOfMemoryError使用方法
1、配置方法
在JAVA_OPTIONS變量中增加
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${目錄}。
例如:export JAVA_OPTS="-Xms2048M -Xmx2048M -Xmn682M -XX:MaxPermSize=96M"
2、參數說明
(1)-XX:+HeapDumpOnOutOfMemoryError參數表示當JVM發生OOM時,自動生成DUMP文件。
(2)-XX:HeapDumpPath=${目錄}參數表示生成DUMP文件的路徑,也可以指定文件名稱,例如:-XX:HeapDumpPath=${目錄}/java_heapdump.hprof。如果不指定文件名,默認爲:java_<pid>_<date>_<time>_heapDump.hprof。
3.在你本機下載一個工具,叫IBM Heap Analyzer
使用IBM Heap Analyzer這個工具,打開dump文件,可以進行分析,定位到內存泄漏位置
1》下載該IBM Heap Analyzer工具,這個工具是個jar包
下載下來是
2》打開工具