实时监测Android内存泄漏的工具-LeakCanary

来源:互联网 发布:淘宝头条 编辑:程序博客网 时间:2024/05/29 11:02

对于android内存泄漏问题,相信很多开发者都不会感到陌生,而在优化性能方面,内存泄漏,特别是在比较大的项目里面,由于多人协作开发,往往比较难定位到。

这里推荐一个开源工具,LeakCanary,来自square公司出品,可以帮助你实施监测内存泄漏问题。

那么,如何使用它呢?

下面让看下如何把它接入进去。

1.build.gradle文件添加如下:

dependencies {   debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3'   releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3' }

2.创建一个自定义的Application类,在类里面,添加如下代码:

public class MyApplication extends Application {  @Override public void onCreate() {    super.onCreate();    LeakCanary.install(this);  }}


3.如果想要观察一个界面退出的时候,是否有内存泄漏,这里这样写:

public class MyApplication extends Application {  public static RefWatcher getRefWatcher(Context context) {    MyApplication application = (MyApplication) context.getApplicationContext();    return application.refWatcher;  }  private RefWatcher refWatcher;  @Override public void onCreate() {    super.onCreate();    refWatcher = LeakCanary.install(this);  }}

4.再在想观察的界面退出时,比如一个fragment,添加如下的代码:

public abstract class MyFragment extends Fragment {  @Override public void onDestroy() {    super.onDestroy();    RefWatcher refWatcher = MyApplication.getRefWatcher(getActivity());    refWatcher.watch(this);  }}

5.你可以在logcat上面观察日志:
In com.kv.leakcanary:1.0:1 com.kv.leakcanary.MainActivity has leaked:* GC ROOT thread java.lang.Thread.<Java Local> (named 'AsyncTask #1')* references com.kv.leakcanary.MainActivity$3.this$0 (anonymous class extends android.os.AsyncTask)* leaks com.kv.leakcanary.MainActivity instance* Reference Key: e71f3bf5-d786-4145-8539-584afaecad1d* Device: Genymotion generic Google Nexus 6 - 5.1.0 - API 22 - 1440x2560 vbox86p* Android Version: 5.1 API: 22* Durations: watch=5086ms, gc=110ms, heap dump=435ms, analysis=2086ms

更多更详细的功能可以参考以下链接。



本文参考的文章有:

https://www.jianshu.com/p/7db231163168

http://blog.csdn.net/yangzhaomuma/article/details/52008100


阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 尼桑城市越野车 汽车尼桑逍客 尼桑汽车怎么样 尼桑什么车 尼桑车多少钱一辆 尼桑轩逸车报价 尼桑骊威商务车 尼桑属于什么档次的车 尼桑7座面包车 尼桑东风日产车报价 尼桑maxima是什么车 尼桑两厢车有哪几款 尼桑骊威车怎么样 尼桑楼兰车怎么样 尼桑两厢车骐达报价 06款尼桑贵士商务车 尼桑骐达两厢车 尼桑骐达车 尼桑轩逸车钥匙 尼桑七座商务车价格 尼桑车钥匙丢了怎么办 尼桑patrol是什么车 尼桑车衣 日产车自动挡 尼桑车保养 车日产 尼桑高端车 日产多功能车 尼桑2厢车 尼桑多功能车 尼桑车报价图片 日产新轩逸车怎么样 尼桑气车 尼桑系列的车 尼桑什么车好 日系车尼桑 尼桑车钥匙怎么换电池 日产汽车价格表 日产小型越野车 日产汽车轩逸 日产汽车suv