[leakcanary]内存泄露检测
16lz
2021-01-26
leakcanary是square公司出的android内存泄露框架,相比起MAT工具,它使用起来非常简便,在android studio中导入很方便。它可以很直观通过通知,告诉你内存泄露产生在哪里。
导入方法:配置Module:app -> build.gradle文件,添加以下依赖
dependencies { debugCompile 'com.squareup.leakcanary:leakcanary-android:1.4-beta1' releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta1' }
使用方法:在application的onCreate方法中初始化
public class App extends Application { @Override public void onCreate() { super.onCreate(); LeakCanary.install(this); }}
以下是笔者在使用过程中的示例图片
在产生内存泄露的时候,它自动弹出通知。可以看到,在最底下的一行是产生内存泄露的地方,意思是:GoodsDetailActivity这个实例产生内存泄露。
我们从下往上看去,可以了解到产生内存泄露的原因,在倒数第二行提示mContext,再继续往上看有mInstance,这是笔者在写PopGoodsdetailSpec这个类的时候使用的单例。看到这里,就可以很清晰的明白,哦!原来是因为使用了单例,对activity持有context的引用,导致activity不能内GC回收,从而产生的内存泄露。这时候再去解决这个单例造成的内存泄露就可以了。
如果你还不知道context的作用,为什么context持有会造成内存泄露,单例的生命周期,推荐看此文:
[Android源码分析-全面理解Context Context]http://blog.csdn.net/singwhatiwanna/article/details/21829971
[Android Context完全解析,你所不知道的Context的各种细节
]http://blog.csdn.net/guolin_blog/article/details/47028975
更多相关文章
- Android(安卓)Studio Error:Failed to resolve: com.android.sup
- Android利用webservices实现图片远程上传
- Android获取内存的不同方法总结
- cocos2d-x for android容易忘记的地方记录
- android linux 命令记录
- android 调用.net 的webservice .
- 让gradle常驻内存,加快项目构建速度
- Android之内存溢出(Out Of Memory)的总结
- android 缩放图片引起的内存溢出