1. 程式人生 > >Eclipse Memory Analyzer使用

Eclipse Memory Analyzer使用

  Eclipse Memory Analyzer是Eclipse提供的記憶體分析工具,是一個快速、功能豐富的JAVA heap分析工具,它可以幫助查詢java程序dump後的檔案。

下載:https://www.eclipse.org/mat/downloads.php
Mac中開啟會報錯,參看提示的錯誤log有如下內容:

…
java.lang.IllegalStateException: The platform metadata area could not be written: 
/private/var/folders/k4/knjt7v5x59l25z_tqmvg094r0000gn/T/AppTranslocation/3CBB3175-DD9A-4A3A-B93F-898BA4445384/d/mat.app/Contents/MacOS/workspace/.metadata. 
By default the platform writes its content under the current working directory when the platform is launched. 
Use the -data parameter to specify a different content area for the platform.
…

原因是那個檔案是隻讀檔案,解決方案是 選中 mat圖示->右鍵->顯示包內容->Contents->Eclipse->MemoryAnalyzer.ini,編輯檔案MemoryAnalyzer.ini

-startup
../Eclipse/plugins/org.eclipse.equinox.launcher_1.5.0.v20180512-1130.jar
-data
/Users/zero/logs
--launcher.library
../Eclipse/plugins/org.eclipse.equinox.launcher.cocoa.macosx.x86_64_1.1.700.v20180518-1200
-vmargs
-Xmx4096m
-Dorg.eclipse.swt.internal.carbon.smallFonts
-XstartOnFirstThread

新增data引數,注意data引數和路徑必須在兩個不同的行,data引數必須放在Laucher之前。為了防止dump檔案太大MAT打不開,順帶把-Xmx調大一點。


Overview:以餅狀圖的形式列舉出了程式記憶體消耗的一些基本資訊,其中每一種不同顏色的餅塊都代表了不同比例的記憶體消耗情況。
Histogram:可以列出記憶體中的物件,物件的個數以及大小。
Dominator Tree:可以列出那個執行緒,以及執行緒下面的那些物件佔用的空間。
Top consumers:通過圖形列出最大的object。
Leak Suspects:通過MA自動分析洩漏的原因。