转载请标明出处:一片枫叶的专栏
(一)什么是内存泄露
Java内存泄漏指的是进程中某些对象(垃圾对象)已经没有使用价值了,但是它们却可以直接或间接地引用到gc roots导致无法被GC回收。无用的对象占据着内存空间,使得实际可使用内存变小,形象地说法就是内存泄漏了。
(二)什么是leakcanary
LeakCanary 是一个square开源的在debug版本中检测内存泄漏的java库;
其github地址:https://github.com/square/leakcanary
(三)如何使用leakcanary检测内存泄露
在leakcanary的github地址中已经对如何使用做了相关的说明,这里简单介绍一下:
1)在android studio的build.gradle中引用leakcanary
debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3.1'
2)自定义Application,并在onCreate方法中执行以下代码:
public class ExampleApplication extends Application {
public RefWatcher refWatcher = null;
@Override
public void onCreate() {
super.onCreate();
refWatcher = LeakCanary.install(this);
}
}
3)在activity或者是fragment中的onCreate方法中执行:
//在自己的应用初始Activity中加入如下两行代码
RefWatcher refWatcher = ExampleApplication.getRefWatcher(this);
refWatcher.watch(this);
这样我们就可以接受检测该Activity中是否存在内存泄露的问题了(当然也可以检测Fragment)
4)当发现有内存泄漏时,Leakcanary就会弹出一个通知栏消息告诉你哪里存在内存泄露的情况。
原文作者:一片枫叶_刘超
原文地址: http://blog.csdn.net/qq_23547831/article/details/50536690
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。