記憶體洩漏檢測實戰(一)
利用Android Studio的Android Profiler、MAT對Android進行記憶體洩漏檢測
前言
在之前的兩篇文章中,Android記憶體管理&MemoeryLeak&OOM分析 和 Android記憶體優化技巧,已經覆蓋了Android上面的記憶體管理與優化相關的一些基礎知識。 現在簡單溫習一下用Android Profiler 和 MAT 對 Android進行記憶體洩漏檢測
Android Profiler & Memory Profiler & MAT
Android Profiler是 Android Studio 3.0中引入的,前身是ddms和android monitor,Android Profiler的基本功能在前身中也有體現。
按以下步驟來開啟 Memory Profiler:
- 點選 View > Tool Windows > Android Profiler(也可以點選工具欄中的 Android Profiler )。
- 從 Android Profiler 工具欄中選擇您想要分析的裝置和應用程序。 如果您通過 USB 連線了某個裝置但該裝置未在裝置列表中列出,請確保您已啟用 USB 除錯。
- 點選 memory時間線中的任意位置可開啟 Memory Profiler。
MAT (Memory Analyzer Tool) 最早是Eclipse的一個外掛。The Eclipse Memory Analyzer is a fast and feature-rich Java heap analyzer that helps you find memory leaks and reduce memory consumption(翻譯一下,MAT是一個又快,同時功能豐富的java堆分析器,可以幫助查詢記憶體洩漏和減少記憶體消耗),從https://www.eclipse.org/mat/downloads.php
step1,利用Memory Profiler dump指定應用的記憶體堆
step2,重複操作以後,進行GC操作,dump指定應用的記憶體堆並儲存起來
step3,convert java heap to mat format
/Users/xxx/Library/Android/sdk/platform-tools/hprof-conv heap_rotateonly_gc.hprof heap_rotateonly_gc_mat.hprof
step4,MAT開啟和檢視記憶體堆檔案
在xxx介面開始查詢對應的Activity,以及該Activity在記憶體中的數目是5,在這個例子中,說明記憶體洩漏了
step5,修改bug,重複迭代
重新重複step1-step4,如果相應Activity的數目正常了,則可以認為記憶體洩漏已經修復