性能优化之内存泄漏(三)分析工具(三)

Heap Viewer工具

1.Heap Viewer能做什么?

1.1 实时查看App分配的内存大小和空闲内存大小
1.2 发现Memory Leaks

2.Heap Viewer使用条件

2.1 5.0以上的系统,包括5.0
2.2 开发者选项可用

3.Heap Viewer启动

3.1 可以直接在Android studio工具栏中直接点击小机器人启动:
3.2 还可以在Android studio的菜单栏中Tools也可以:

4.Heap Viewer面板
性能优化之内存泄漏(三)分析工具(三)_第1张图片
Paste_Image.png

按上图的标记顺序按下,我们就能看到内存的具体数据,右边面板中数值会在每次GC时发生改变,包括App自动触发或者你来手动触发。
总览:


Paste_Image.png

性能优化之内存泄漏(三)分析工具(三)_第2张图片
Paste_Image.png

详情:


性能优化之内存泄漏(三)分析工具(三)_第3张图片
Paste_Image.png

性能优化之内存泄漏(三)分析工具(三)_第4张图片
Paste_Image.png

性能优化之内存泄漏(三)分析工具(三)_第5张图片
Paste_Image.png

性能优化之内存泄漏(三)分析工具(三)_第6张图片
Paste_Image.png
内存泄漏

英文名:Memory Leaks
标准解释:无用的单纯,但是还是没GC ROOT引用的内存
通俗解释:该死不死的内存

检测

那么如何检测呢?Heap Viewer中的数值会自动在每次发生GC时会自动更新,那么我们是等着他自己GC么?既然我们是来看内存泄漏,那么我们在需要检测内存泄漏的用例执行过后,手动GC下,然后观察data object一栏的total size(也可以观察Heap Size/Allocated内存的情况),看看内存是不是会回到一个稳定值,多次操作后,只要内存是稳定在某个值,那么说明没有内存溢出的,如果发现内存在每次GC后,都在增长,不管是慢增长还是快速增长,都说明有内存泄漏的可能性。

实例

1.刚打开首页,手动GC一下:


性能优化之内存泄漏(三)分析工具(三)_第7张图片
Paste_Image.png

2.首页到详情页10遍,最后回到首页,手动GC一下,直到数值不再变化:


性能优化之内存泄漏(三)分析工具(三)_第8张图片
Paste_Image.png

3.首页到详情页10遍,最后回到首页,手动GC一下:
性能优化之内存泄漏(三)分析工具(三)_第9张图片
Paste_Image.png

从data object一栏看到该类型的数值会在不断增长,可能发生了内存泄漏,而我们也可以从上面三个图的标红部分来看,Allocated分别增加了2.418M和1.084M,而且你继续这么操作下去,内存依然是增长的趋势

Heap Viewer不光可以用来检测是否有内存泄漏,对于内存抖动,我们也可以用该工具检测,因为内存抖动的时候,会频繁发生GC,这个时候我们只需要开启Heap Viewer,观察数据的变化,如果发生内存抖动,会观察到数据在段时间内频繁更新

你可能感兴趣的:(性能优化之内存泄漏(三)分析工具(三))