Android内存泄漏排查

工具:MAT+Android Studio Profiler 

Profiler主要负责捕获内存快照,MAT主要负责引用分析。

一些直观的内存泄漏用Profiler就好,当然这个需要自己去定位内存泄漏代码。Profiler适合用于比较复杂的引用,不易推测出泄漏的地方,MAT能很好地展示引用链,帮助排查泄漏。

使用方法:

结合自己的应用来说,我在MainActivity中借助Profiler手动重复GC若干次,然后点击dump java heap生成内存快照,然后按照包的形式进行显示,很显然SplashActivity内存没有被释放掉,我推测是加载广告造成的。

为了确定此泄露是加载广告造成的,试着用MAT分析引用。

 

Leak suspects 是MAT推测的内存泄漏的地方。

点开第一个泄漏,然后找到Accumulated Objects in Dominator Tree ----------> by incoming references ------>mearge shortest paths to gc roots ------------>最后选择排除弱引用、虚引用,选择结果如下:

很明显是MyAdvertisement引用了MainActivity。解决完此问题又截取一次内存快照如下:

在下面MAT的内存泄漏推测中都没有找到以上内存泄漏说明问题已经解决。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值