如何使用Heap Analyzer生成和分析IBM Java Heapdump?
来源:互联网 发布:php长连接 消息推送 编辑:程序博客网 时间:2024/06/06 16:29
IBM Java 和 Sun Java支持的第三方工具不太一样,在AIX 服务器上只能安装IBM JAVA,那么当我们运行的Java程序出现可疑的内存泄漏,该如何诊断呢?
一、什么是heapdump
HeapDump文件是一个二进制文件,它保存了某一时刻JVM堆中对象使用情况,这种文件需要相应的工具进行分析。
二、如何生成Heapdump:
1. 设置参数
export IBM_HEAPDUMP=true
export IBM_HEAPDUMPDIR=/tmp/java
2. 找出正在运行的java 进程。
通过ps -ef 找出进程号,比如如下的例子找出运行HellowWorld Java程序的进程号
# ps -ef | grep -i java ucdaxxx 8388616 1 0 Apr 22 - 1:07 /usr/java8_64/bin/java -Dfile.encoding=UTF-8 -jar /opt/xxx/ibm-ucdagent/monitor/air-monitor.jar /opt/urbancode/ibm-ucdagent /opt/urbancode/ibm-ucdagent/bin/worker-args.conf 7000pcoxxxe 9764918 9240722 0 Apr 22 - 1:17 /usr/java6/bin/java -Xmx512m -Xms20m -Xscmx10m -Xshareclasses -Xbootclasspath/p:/usr/java6/jre/lib/ibmjsseprovider2.jar -Dfile.encoding=UTF-8 -Xbootclasspath/a:/pconsole/lwi/runtime/core/eclipse/plugins/com.ibm.rcp.base_6.2.3.20110824-0615/rcpbootcp.jar:/pconsole/lwi/lib/ISCJaasModule.jar:/pconsole/lwi/lib/com.ibm.logging.icl_1.1.1.jar:/pconsole/lwi/lib/jaas2zos.jar:/pconsole/lwi/lib/jaasmodule.jar:/pconsole/lwi/lib/lwidiag.jar:/pconsole/lwi/lib/lwinative.jar:/pconsole/lwi/lib/lwinl.jar:/pconsole/lwi/lib/lwirolemap.jar:/pconsole/lwi/lib/lwisecurity.jar:/pconsole/lwi/lib/lwitools.jar:/pconsole/lwi/lib/passutils.jar -Xverify:none -cp eclipse/launch.jar:eclipse/startup.jar:/pconsole/lwi/runtime/core/eclipse/plugins/com.ibm.rcp.base_6.2.3.20110824-0615/launcher.jar com.ibm.lwi.LaunchLWIucdaxxt 10944596 8388616 0 Apr 22 - 2:54 /usr/java8_64/jre/bin/java -Dcom.urbancode.air.mw.common.Monitor.port=3xxx -Xmx256m -Dfile.encoding=UTF-8 -Dconsole.encoding=UTF-8 -Djava.io.tmpdir=/opt/urbancode/ibm-ucdagent/var/temp -Djava.security.properties=/opt/urbancode/ibm-ucdagent/conf/agent/java.security -jar /opt/urbancode/ibm-ucdagent/monitor/air-worker.jar /opt/urbancode/ibm-ucdagent/bin/classpath.conf 5000 com.urbancode.air.agent.AgentWorker root 15728718 13304018 0 06:10:47 pts/2 0:00 grep -i javaa1inxxx 24576212 22937816 5 06:10:35 pts/0 0:01 /home/a1insctp/sqllib/java/jdk64/bin/java HelloWorld
3. 给 JVM发一个SIGQUIT的信号
For Windows: press CTRL+BREAK
For Linux/Unix: Use kill -3 or CTRL+| 注: kill -3 不会真正杀掉此进程,
下面我们通过kill -3来发送SIGQUIT信号
# kill -3 24576212
4. 检查 IBM_HEAPDUMPDIR 目录
# ls -atlrtotal 936-rw-r--r-- 1 a1insctp db2iadm1 0 May 10 02:57 aa.txtdrwxrwxrwx 2 root system 256 May 10 06:14 .-rw-r--r-- 1 a1insctp db2iadm1 82671 May 10 06:14 heapdump.20170510.061428.24576212.0001.phd
三、如何分析Heapdump
1. 下载IBM HeapAnalyzer工具.
就是一个HAxxx.jar包。 (xxx为版本号,比如目前下载链接下载的就是har456.jar)
https://www.ibm.com/developerworks/community/groups/service/html/communityview?communityUuid=4544bafe-c7a2-455f-9d43-eb866ea60091
2. 运行HeapAnalyzer
Java -jar har456.jar
3. 在HeapAnalyzer的图形化界面打开第二步声称的heapdump文件,进行分析:
具体如何分析:请参考http://www-01.ibm.com/support/docview.wss?uid=swg27006624&aid=1
- 如何使用Heap Analyzer生成和分析IBM Java Heapdump?
- 如何生成javacore和heapdump
- 使用 Eclipse Memory Analyzer 进行堆转储文件(heapdump)分析
- IBM 的 Java 诊断,第 4 部分: 使用分析模块扩展 IBM Dump Analyzer for Java
- 如何手动生成heapdump和javacore文件
- 用eclipse memory analyzer分析heapdump
- 使用WAS生成heapdump
- 服务生成javacore 和heapdump
- IBM 的 Java 诊断,第 3 部分: 使用面向 Java 的 Lock Analyzer 诊断同步和锁问题
- 实例讲解:使用IBM heapAnalyzer分析heap dump文件步骤
- 实例讲解:使用IBM heapAnalyzer分析heap dump文件步骤 .
- 使用IBM heapAnalyzer分析heap dump文件步骤
- 分析 Java heap dump工具之IBM HeapAnalyzer
- Eclipse 如何安装和使用 MAT 插件(内存映像分析工具 Eclipse Memory Analyzer)
- 使用jdk自带工具生成heapdump文件以及分析内存中的变量情况
- JVM javacore 和 heapdump 文件生成选项
- jvm 生成javacore和heapdump文件
- jvm 生成javacore和heapdump文件
- java 线程池
- 数组指针学习
- C++回炉(4)
- Postgresql GROUPING SETS、CUBE和ROLLUP
- linux epoll详解及使用方法概述
- 如何使用Heap Analyzer生成和分析IBM Java Heapdump?
- Magento 常见属性和自定义属性的调用
- Android DEX 方法超过64K限制
- 字符集编码问题(get/post请求,tomcat有不同的处理)
- 数据库 SQL SEVER 2008 + VS2010
- 建立一个maven项目
- Linux中启动和停止jar包的运行
- 设计模式之单例设计模式
- Java 以post方式获取数据