上文中,談到了windows如何使用MAT分析堆快照,查找記憶體洩漏?那麼在生産上如何分析dump檔案呢?
生産上分析dump檔案的話,還是linux工具比較友善,因為生産上的dump檔案一般都比較大,這麼大的檔案拷貝到本機要耗費很長時間。
那麼linux有什麼好的解析dump工具呢? 如何解析 java dump的檔案?
本文就來說一下 MAT在Linxu中的用法:
Eclipse的MAT工具下載下傳連結 MAT支援各種作業系統,找到Linux版本下載下傳下來# 運作uname -m 看一下linux是 x86_64還是 x86的幫助你選擇下載下傳那個版本。uname -m#x86_64wget http://eclipse.stu.edu.tw/mat/1.9.0/rcp/MemoryAnalyzer-1.9.0.20190605-linux.gtk.x86_64.zip
解壓配置MAT基本參數
jmap -dump:format=b,file=jmap.info PID
jmap dump整個堆 在哪個路徑下 運作 就會在哪個路徑下生成dump檔案 PID 為程序号
./ParseHeapDump.sh jmap.info org.eclipse.mat.api:suspects org.eclipse.mat.api:overview org.eclipse.mat.api:top_components
MAT分析 dump
./ParseHeapDump.sh jmap.info org.eclipse.mat.api:suspects org.eclipse.mat.api:overview org.eclipse.mat.api:top_components
等待結果....
結果會在與dump檔案同路徑下 生産如下三個zip檔案以及其他非zip檔案 這三個zip檔案很重要,檔案很小可以直接拷貝到本機

jmap_Leak_Suspects.zipjmap_System_Overview.zipjmap_Top_Components.zip
檢視報告結果
有兩種檢視報告的方法
- 直接把zip下載下傳到本地,然後解壓用浏覽器檢視index.html
- 把zip下載下傳到本地, 用MAT可視化工具解析zip