MAT
● shallow heap:指的是某一个对象所占内存大小。
● retained heap:指的是一个对象的retained set所包含对象所占内存的总大小。
1.Immediate Dorminator
这是一个非常有用的功能,它的作用就是找出选择对象在Dominator Tree中的父节点。
2.Merge Shortest Paths to GC Roots 可以查看一个对象到RC Roots是否存在引用链相连接, 在JAVA中是通过可达性(Reachability Analysis)来判断对象是否存活,这个算法的基本思想是通过一系列的称谓"GC Roots"的对象作为起始点,从这些节点开始向下搜索,搜索所走得路径称为引用链,当一个对象到GC Roots没有任何引用链相连则该对象被判定为可以被回收的对象,反之不能被回收,我们可以选择 exclude all phantom/weak/soft etc.references(排查虚引用/弱引用/软引用等)因为被虚引用/弱引用/软引用的对象可以直接被GC给回收.
List object - With outgoing References 显示选中对象持有那些对象
List object - With incoming References 显示选中对象被那些外部对象所持有
Show object by class - With outgoing References 显示选中对象持有哪些对象, 这些对象按类合并在一起排序
Show object by class - With incoming References 显示选中对象被哪些外部对象持有, 这些对象按类合并在一起排序
常见的内存泄露问题
1.上面两种情形
2.资源对象没有关闭,比如数据库操作中得Cursor,IO操作的对象
3.调用了registerReceiver注册广播后未调用unregisterReceiver()来取消
4.调用了View.getViewTreeObserver().addOnXXXListener ,而没有调用View.getViewTreeObserver().removeXXXListener
5.Android 3.0以前,没有对不在使用的Bitmap调用recycle(),当然在Android 3.0以后就不需要了,更详细的请查看http://blog.csdn.net/xiaanming/article/details/41084843
6.Context的泄露,比如我们在单例类中使用Context对象
7.Bitmap泄露
原文:http://www.cnblogs.com/season-xie/p/6360469.html