如何在项目中查找内存泄漏以及有哪些帮助工具?

来源:互联网 发布:淘宝首页下拉看懂电影 编辑:程序博客网 时间:2024/05/20 16:36

相信很多人有过这种情况,想优化项目,却无从下手,而内存泄漏就是一个很大的模块,那么如何在现有的项目中查找内存泄漏呢?

1.确定是否存在内存泄漏

使用MAT内存分析工具

我们可以反复执行某一个操作并同时执行GC排除可以回收掉的内存,观察data object(Heap视图中的一个数据对象)的Total Size值,正常情况下Total Size值会稳定在一个i额有限的范围内,也就是说代码良好,没有泄漏情况,反之,如果随着操作次数的增多Total Size的值越来越大,可以初步判断这个操作导致了内存泄漏

2.找怀疑对象

MAT对比操作前后的hprof来定位内存泄漏的是什么数据对象

3.MAT分析hprof来定位内存泄漏的原因所在

过滤出怀疑对象,然后分析持有此类对象的外部对象,然后再过滤掉一些弱引用、软引用、虚引用,因为他们可以被GC回收,不属于内存泄漏。

逐个分析每个对象的GC路径是否正常,此时就是要进入代码分析此时这个对象的引用持有是否合理。

性能优化的帮助工具:

1.MAT

2.Mamory Monitor

3.Heap Tool

4.Allaction Tracking

5.LeakCanary

6.Lint工具

PS:个人觉得LeakCanary最方便,可以直接在手机端查看内存泄漏。

0 0