Android Studio 的dump java heap以及mat调试

android studio 1.5 以上默认自带了mat 的调试的工具,

使用方法:1 点击dump java heap 的图标

                2 玩应用,

                3 android studio会默认帮我生成一张虚线区域的heap的使用的情况的.hprof

Android Studio 的dump java heap以及mat调试_第1张图片
xxx.hprof

4 点击右上角的analyzer tasks,选择detected leaked activities,find duplicate string,点击run 

Android Studio 的dump java heap以及mat调试_第2张图片

5 从leak activity 选择的分析还有十分有其它的变量引用着activity,从而让activity没办法释放掉

mat的工具的调试

将android studio的xxx.hprof 文件生成mat能够识别的标准的文件,选择mat去分析。大致差不多,简单说下我们需要关注的几个视图

Histogram:列出内存中的对象,对象的个数以及大小

Dominator Tree:列出最大的对象以及其依赖存活的Object (大小是以Retained Heap为标准排序的)

Shallow size就是对象本身占用内存的大小,不包含其引用的对象。

Retained Heap的概念,它表示如果一个对象被释放掉,那会因为该对象的释放而减少引用进而被释放的所有的对象(包括被递归释放的)所占用的heap大小,也就是他引用了其他的堆里面的对象,一般我们一需要关注所有关于这个对象的引用。

使用这条语句过滤所有的activity的对象,选择右键选择path to gcroot 选择all reference,一一去分析原因吧。
select*frominstanceofandroid.app.Activity

你可能感兴趣的:(Android Studio 的dump java heap以及mat调试)