记录内存泄漏解决的经验总结

          内存泄漏的问题,是一个老生常谈的问题,这里不多说,虽然网上解决的思路一大把,但是我把我自己的解决过程记录一下,解决方法当然可以百度就出来了,这里不过多记录。

          1.使用Leakcanary,简单使用配置如下:

dependencies {
    debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5'
    releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'
    testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'
}
           使用当然也非常简单,在application的oncreate方法中加入如下代码就好了:

LeakCanary.install(this);
         这样就可以在运行app的时候检查是否有内存泄漏了。但是有些时候会发现,报的内存泄漏发生的位置很尴尬,为系统控件等等,一眼看到后觉得不是我们的代码的问题,这个时候就需要用AS的自带工具进行内存泄漏检查了。

         2.使用AS的内存分析工具进行内存泄漏检查,使用过程如下

                 1)运行app,然后选择查看运行内存,如下图

             1)

              2)点击红线所指向的按钮,然后会出现如下图所示效果:

             

            3)稍等一分钟左右就会在AS中出现如下内容:

             


4)上面就是此时app占用内存的情况分析了,当然初看比较乱,我们要进行筛选,如下图:

    首先红色箭头选中view树结构,然后黄色箭头选择你自己的包名内的文件,这时候就会看到圆圈圈中的内容了,发现了没有不是1或者0,说明这里有内存泄漏,需要修改。好了,然后我选择SquareView这个进行分析,为什么是这个而不是activity或者fragment呢?因为activity和fragment中存在泄漏是由于里面的view引起的,点击后看右侧图,再点击后看下面的图,蓝绿色的箭头指示位置就是具体是什么造成的内存不能够释放。到此就可以根据具体位置进行具体解决了。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值