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 文件