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

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

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最方便,可以直接在手机端查看内存泄漏。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值