本文将介绍比较常用的的内存泄漏检测工具,包括HeapSnapShot、HeapViewer、MAT
一、HeapSnapShot的使用
HeapSnapShot意思是堆快照,通过堆内存的信息来分析内存泄漏的问题。
1、启动HeapSnapShot

2、显示Heap SnapShot面板

点击截图部分的左上角,可以看到有个App heap,点开,里面还有Image heap、Zygote heap,分别代码app堆内存信息、图片堆内存信息、zygote进程的堆内存信息。
A区域:
列举了堆内存中的所有的类,以下是列表中列名:
名称 | 意义 |
Total Count | 内存中该类的对象个数 |
Heap Count | 堆内存中该类的对象个数 |
Sizeof | 物理大小 |
Shallow size | 该对象本身占有内存大小 |
Retained Size | 释放该对象后,节省的内存大小 |
B区域:
当我们点击某个类时,右边就会显示该类的实例化对象,这里会显示多少个实体,以及详细信息。
名称 | 意义 |
depth | 深度 |
Shallow Size | 对象本身内存大小 |
Dominating Size | 管辖的内存大小 |
当你点击某个对象时,将展开对象内部有哪些对象,同时C区域也会显示哪些对象引用了该对象:

C区域:

某对象引用树对象,在这里可以看到其被谁引用了,比如内存泄漏中,可以看出它被谁引用
二、Heap Viewer工具使用
heap viewer能做什么
实时查看app分配的内存大小和空间内存大小
发现memory leaks
heap vie