Eclipse Memory Analyzer
對於MAT這個專業的內存泄漏分析工具,大家應該都比較熟悉,用起來很方便,只需要打開Eclipse,然後把jmap或者jvm dump出來的文件拖到Eclipse裏面,就會自動分析,然後以頁面的形式展示出來結果。
在結果裏面可以看到內存總體情況、泄漏嫌疑對象、以及所有對象的內存佔用情況。這對我們找到內存溢出、內存泄漏的元兇幫助很大。
但是對於生產環境,總會遇到這樣的問題,dump出來的文件8g以上,比較大,自己的臺式機或者筆記本的內存根本不夠用。況且Eclipse啓動起來,就佔1個G的內存。
下載MAT
以前一般是直接以插件的形式安裝到Eclipse裏面,其實MAT是可以獨立運行的,我們需要到官網下載獨立包。
選擇Linux(x86_64/GTK 2)版本,下載下來,然後到自己的服務器上進行解壓,執行:
unzip mat.zip
配置MAT
解壓之後,需要修改mat的配置文件,打開MemoryAnalyzer.ini文件,修改-Xmx的值,使大於hprof文件的大小,建議是其2倍大小。
-startup
plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.100.v20110505
-vmargs
-Xms16g
-Xmx16g
執行分析命令
執行如下命令會輸出泄漏嫌疑對象的分析結果,這個結果是比較全面的。
./ParseHeapDump.sh ../today_heap_dump/jvm.hprof org.eclipse.mat.api:suspects
還支持另外兩個分析結果:
org.eclipse.mat.api:overview
org.eclipse.mat.api:top_components
出結果的速度很快,8G的文件,大概10來分鐘出結果。
運行後,會生成如下的幾個壓縮包,解壓後打開其中的html頁面即可看到結果。