IBM HeapAnalyzer是一款免費的JVM內存堆的圖形分析工具,它可以有效的列舉堆的內存使用狀況,幫助分析Java內存泄漏的原因。
功能與MAT類似。
1.下載
https://www.ibm.com/developerworks/community/groups/service/html/communityview?communityUuid=4544bafe-c7a2-455f-9d43-eb866ea60091

下載下來是一個jar包。ha456.jar
2.運行環境要求
ha456.jar要求jdk1.7以上,並配置好環境變量。
我們使用下面的代碼來生成堆轉儲快照文件

JVM參數為:
-verbose:gc -Xms10M -Xmx10M -XX:+HeapDumpOnOutOfMemoryError
生成文件名為java_pid5192.hprof的堆轉儲文件。
運行命令打開HeapAnalyzer
java –Xmx[heapsize] –jar ha456.jar
Maximum heap size should not be larger than the size of available physical memory size for this tool due to performance issue.


3.打開堆轉儲文件java_pid5192.hprof

可以看到,堆內存的96.64%的空間被Test$OOMObject占用。
占用內存的對象找到了,就到代碼中分析就可以了。
具體使用方法請參照 ha423\下的readme.html,這里面講的很詳細
