工具
使用
AS 4.+直接能检测设备内存查看问题所在。
导入LeakCanary
在项目的gradle文件导入LeakCanary,具体操作见leakcanary
当项目出现内存泄漏,通过LeakCanary定位具体的Activity或Fragment。
AS(v3.1.2)获取heap dump文件 .hprof
一、选择Android Profiler,选择MEMORY。
二、先强制GC多次,然后获取heap dump信息
三、生成heap dump 信息文件 a.hprof
四、特别注意,capture出来的 a.hprof 并不能直接交由Ecliplse MAT 处理。需要AndroidSDK提供的hprof-conv工具转码一次:
hprof-conv a.hprof b.hprof
MAT分析内存泄漏原因
一、导入转换后的 b.hprof,选择默认项,效果如下:
二、获取数据类名
三、筛选LeakCanary定位的Activity/Fragment
四、选中 查看引用详情
五、具体情况具体分析
这里随便找的个并没有内存泄漏的例子,具体情况酌情处理
这里涉及到java的GC,以及四种引用类型,之后再做分析