Android内存优化之LeakCanary的使用

debugCompile ‘com.squareup.leakcanary:leakcanary-android:1.5.4’

releaseCompile ‘com.squareup.leakcanary:leakcanary-android-no-op:1.5.4’

build.gradle引入这两个依赖

//添加leakcanary相关的依赖

//在release版本中,使用的是LeakCanary的no-op版本,也就是没有实际代码和操作的Wrapper版本,只包含LeakCanary和RefWatcher类的空实现,这样不会对生成的APK包体积和应用性能造成影响;

1.在Application处填写如下;其中有获取该RefWatcher的方法,我们在Fragment里面需要使用install方法

1.基本上就大功告成了

2.举个例子,在MainActivity中我们如下

测试

在通知中我们可以看如下通知

分析结果

LeakThead是 内部类,默认持有MainActivity的引用;多次横竖屏之后,Activity的生命周期会重走,本来应该被GC回收,但是并没有被回收,就造成了内存泄漏.图中告诉我们是MainActviity实例导致内存泄漏,往上分析就是LeackThread导致.

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,376评论 25 709
  • LeakCanary官方Demo介绍 首先可以去github上面downlaod它的官方开源Demo 用Andro...
    最多想你阅读 10,280评论 2 18
  • 内存管理的目的就是让我们在开发中怎么有效的避免我们的应用出现内存泄漏的问题。内存泄漏大家都不陌生了,简单粗俗的讲,...
    宇宙只有巴掌大阅读 6,982评论 0 12
  • 不知道是时间磨平了我的棱角,还是岁月沧桑了我的豪情。 我一直都是一个没有理想没有抱负的人,从来没说过自己选择自己的...
    韧漉僧炯阅读 682评论 0 0
  • 今夜是否如昨夜? 不, 今夜 行路者 行路难 谁在水泥桥下 听夜风微抚 螟虫无声 听火车长鸣 渐行渐远 沉...
    犬马牧羊阅读 1,443评论 0 1