HeapAnalyzer分析工具
由於jvisualvm或jmap生成的dump文件太大,常常需要用到dump文件分析工具對dump文件進行分析。HeapAnalyzer通過分析heapdump文件,以了解哪些對象占用了太多的堆棧空間,來發現導致內存泄露或者可能引起內存泄露的對象。啟動后使用open file菜單,瀏覽打開我們需要進行內存堆棧分析的heapdump文件。
IBM HeapAnalyzer運行環境要求JDK 1.6或以上;如果JDK版本過低,報錯如下:
Exception in thread "main" java.lang.NoClassDefFoundError: java/util/regex/PatternSyntaxException
運行時需要足夠大的內存,Heapdump文件一般比較大,打開耗時較長,推薦在配置比較好的機器上進行堆棧分析,這樣-Xmx設置大一點。
如果在解析heapdump文件時出現java.lang.OutOfMemoryError的報錯:
請嘗試最大堆大小(-Xmx)值給JVM更多的內存。由於該工具性能的要求,最大堆內存應不大於物理內存的大小。
啟動方法:
運行ha396.jar文件,在可執行文件run.bat/run.sh中配置環境變量:
java -jar -Xmx3000m ha396.jar
執行后打開IBM HeapAnalyzer圖形化界面,導入deapdump文件。
也可以通過命令行的方式直接打開heapdump文件:
java -Xmx3000m -jar ha396.jar heapdump.20120503.170018.1510.0003.phd
其中,Xmx3000m指定JVM分配的內存是3000m
執行以上命令后,ha控制台出現如下結果。打開heapdump文件后的效果圖,可以選擇多種視圖進行分析,Tree View,Objects List等等。