1、內存泄漏的排查方法
DDMS(Dalvik Debug Monitor Server),現在改叫ADM(Android Debug Monitor)了。
它有兩項功能可用於內存檢查 :
· Heap 查看堆的分配情況(點擊DDMS左側Device工具欄上的Heap Update按鈕,再點擊Heap頁裏的CauseGC)。
· Allocation Tracker跟蹤內存分配情況。
DDMS 這兩項功能有助於找到內存泄漏的操作行爲。
MAT(Eclipse Memory Analysis Tools)是一個分析
Java堆數據的專業工具,用它可以定位內存泄漏的原因。
工具地址 : https://www.eclipse.org/mat/
2、利用MAT分析內存堆
DDMS 可以將當前的內存 Dump成一個 hprof格式的文件,MAT 讀取這個文件後會給出方便閱讀的信息。配合它的查找,對比功能,就可以定位內存泄漏的原因。
· 獲取 hprof文件(點擊DDMS左側Device工具欄上的Dump Hprof File按鈕,將內存信息保存成文件)。
· 轉換 hprof文件(DDMS Dump 出的文件,要經過轉換才能被 MAT識別,Android SDK提供了工具 hprof-conv)。
它位於Android\SDK\platform-tools目錄下。使用如下命令:hprof-conv dump.hprof out.hprof
用 MAT打開轉換後的 out.hprof 文件