【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

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