1. 下載MAT工具 https://www.eclipse.org/mat/downloads.php
2. 右鍵打開mat.app,打開MAT工具,mac下打開可能出錯,解決方法如下:
編輯mat.app/Contents/Eclipse下的MemoryAnalyzer.ini文件,
在--launcher.library前添加日志輸出目錄
-data
/Users/xx/log
我的修改如下:
3. 使用Android Studio的Profiler導出原始hprof文件
4. 使用android sdk自帶的platform-tools下的hprof-conv工具轉換原始hprof文件,命令如下:
hprof-conv ./原始文件.hprof ./目標文件.hprof
5. mat工具打開目標hprof文件
右鍵打開mat.app打開mat工具,接着點擊工作台(Workspace)下打開堆文件按鈕(Open a Heap Dump),選擇並打開目標文件。
6. 分析目標hprof文件

如果對應的Objects列上大於1,可能是出現內容泄露了。接着往下看是誰引用導致的內存泄露:
第4步:選擇並右鍵 -> List objects -> with incoming references 打開實例引用視圖。
第5步:在實例引用視圖,繼續選擇並右鍵 -> Path To GC Roots -> with all references 即可查看所有的引用路徑。
當然現在大多時候都是使用開源項目自動檢測了,比如LeakCanary。LeakCanary這個項目分析原理也是dump並解析hprof文件。所以也是有必要學習使用MAT工具的。