MAT分析:
Step1:如果用MAT分析,需要转换下:
MAT是用来分析java程序的hprof文件的 与Android导出的hprof有一定的格式区别,因此我们需要把导出的hprof文件转换一下,sdk中提供给我们转换的工具 hprof-conv.exe (在sdk的platform-tools目录下)
hprof-conv 源文件 输出文件
比如 hprof-conv E:aaa.hprof E:output.hprof
转换之后 用MemoryAnalyzer.exe 打开这个output.hprof文件
由于我们内存泄漏一般发生在Activity中,因此只需要查找Activity即可。
Step2:QQL 输入 select * from instanceof android.app.Activity ,F5执行或红色!
step3、查看引用情况,Activity或View大于1个对象, 都有可能发生内存泄露.(进一步排查,排查所有弱、软引用)
PS:当看到和测试包名相关联的activity引用路径时,比如看到 this0引用了这个Activity;this0是表示 内部类的意思,也就是一个内部类引用了Activity 而 this$0又被 target引用 target是一个线程,原因找到了,内存泄漏的原因 就是 Activity被 内部类引用 而内部类又被线程使用 因此无法释放



