【linux】linux下對java程序生成dump文件,並使用IBM Heap Analyzer進行分析,查找定位內存泄漏的問題代碼

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包

下載地址:https://www.ibm.com/developerworks/community/groups/service/html/communityview?communityUuid=4544bafe-c7a2-455f-9d43-eb866ea60091

下載下來是

2》打開工具

來源:https://www.cnblogs.com/sxdcgaq8080/p/10695101.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章