1.首先,java程序启动在linux,怎么生成dump文件?

  1》第一步,首先你需要得到java程序的PID,最简单的方法使用如下命令



ps -ef|grep java


【linux】linux下对java程序生成dump文件,并使用IBM Heap Analyzer进行分析,查找定位内存泄漏的问题代码_spring

  或者如果是docker启动的  springboot服务,也可以使用本命令:

【linux】linux下对java程序生成dump文件,并使用IBM Heap Analyzer进行分析,查找定位内存泄漏的问题代码_linux_02

 

  2》在任意位置,执行jmap命令,生成dump文件



jmap -dump:format=b,file=serviceDump.dat 953539



jmap -dump:format=b,file=serviceDump.dat [java进程的PID]


【linux】linux下对java程序生成dump文件,并使用IBM Heap Analyzer进行分析,查找定位内存泄漏的问题代码_linux_03

可以看到,生成的dump文件叫:serviceDump.dat

     生成文件的位置在:/backup/tomcat7/conf/serviceDump.dat

 

  3》你可以将这个dat文件,通过xftp工具,拉取到你的本地

【linux】linux下对java程序生成dump文件,并使用IBM Heap Analyzer进行分析,查找定位内存泄漏的问题代码_java程序_04

 

 

 

2.在你本机下载一个工具,叫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​

【linux】linux下对java程序生成dump文件,并使用IBM Heap Analyzer进行分析,查找定位内存泄漏的问题代码_java程序_05

 

 

 

下载下来是

【linux】linux下对java程序生成dump文件,并使用IBM Heap Analyzer进行分析,查找定位内存泄漏的问题代码_java_06

 

  2》打开工具

 

【linux】linux下对java程序生成dump文件,并使用IBM Heap Analyzer进行分析,查找定位内存泄漏的问题代码_spring_07