Widows 分析dump文件的工具太多了,而且都是傻瓜式的點點就好了。 但是生產上分析dump文件的話,還是linux工具比較方便,因為生產上的dump文件一般都至少是GB級別的,這么大的文件拷貝到本機要耗費很長時間,特別是遇到生產事故的時候,時間=金錢。 更不允許我們把寶貴的拍錯時間浪費到網絡傳輸上面。 那么linux有什么好的解析dump工具呢? 如何解析 java dump的文件? 這里比較推薦IBM的eclipse的MAT工具。 1,linux操作系統 JDK8 以上 2,下載MAT的linux版本 MAT支持各種操作系統,找到Linux版本下載下來 # 運行uname -m 看一下linux是 x86_64還是 x86的幫助你選擇下載那個版本。 uname -m #x86_64 axel -n100 -a http://www.eclipse.org/downloads/download.php?file=/mat/1.7/rcp/MemoryAnalyzer-1.7.0.20170613-linux.gtk.x86_64.zip 3,解壓配置MAT基本參數 unzip MemoryAnalyzer-1.8.0.20180604-linux.gtk.x86_64.zip ## 修改MAT的內存大小, 注意這個大小要根據你dump文件大小來的,如果dump文件是5GB那么 這里最好配>5GB 否則會報MAT內存不足的異常 ## 修改MemoryAnalyzer.ini 的 -Xmx6024m vi MemoryAnalyzer.ini jmap dump整個堆 jmap -dump:format=b,file=jmap.info PID 4,MAT分析 dump ./ParseHeapDump.sh jmap.info org.eclipse.mat.api:suspects org.eclipse.mat.api:overview org.eclipse.mat.api:top_components 等待結果.... 5,結果會生產如下三個zip文件,很小可以直接拷貝到本機 jmap_Leak_Suspects.zip jmap_System_Overview.zip jmap_Top_Components.zip 6,查看報告結果 有兩種查看報告的方法 直接把zip下載到本地,然后解壓用瀏覽器查看index.html 把zip下載到本地, 用MAT可視化工具解析zip 7,遇到問題 Unable to initialize GTK+ 遇到這個問題的話,是因為ParseHeapDump.sh 里面需要調用GTK的一些東西。解決方法: vi ParseHeapDump.sh #注釋掉 "$(dirname -- "$0")"/MemoryAnalyzer -consolelog -application org.eclipse.mat.api.parse "$@"這一行 #然后加入下面 #注意plugins/org.eclipse.equinox.launcher_1.5.0.v20180512-1130.jar要根據你自己本地的文件名做修改調整 java -Xmx4g -Xms4g \ -jar plugins/org.eclipse.equinox.launcher_1.5.0.v20180512-1130.jar \ -consoleLog -consolelog -application org.eclipse.mat.api.parse "$@" 然后繼續運行 ./ParseHeapDump.sh jmap.info org.eclipse.mat.api:suspects org.eclipse.mat.api:overview org.eclipse.mat.api:top_components 問題解決