工作生活

Android性能:leakcanary检测内存泄露

2019-07-04  本文已影响0人  你好_平凡

1.什么是内存泄露?

    简单的理解就是,本应该被GC回收的对象,因为使用不当没有被GC回收。

2.什么是Java GC

      如图所示,不属于GC Root层的对象,在java判定的内存紧张情况下会被回收掉。

    GC的回收对象:GC会收集那些不是GC roots且没有被GC roots引用的对象在内存不够用的情况下进行回收。

3.leakcanary的使用方法

leakcanary是Square公司为Android开发者提供的一个自动检测内存泄漏的工具,Git地址:https://github.com/square/leakcanary

    a)Android Studio 在Module下build.gradle下使用依赖:

        dependencies {

            debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.6.1' //测试版本使用

            releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.6.1' //正式版本使用

            debugImplementation 'com.squareup.leakcanary:leakcanary-support-fragment:1.6.1'  //fragment检测

        }

    b)在自定义Application中初始化

        if (!LeakCanary.isInAnalyzerProcess(this)) {

                LeakCanary.install(this);

          }

4.查看说明

    集成后对原来的使用不会造成任何影响,只有当应用在某一处发生了泄露时,手机会自动安装一个应用图标如下:

点开这个App,里有如下界面:该界面显示的是内存泄露出现的次数,和出现的位置

点开某一条会出现如下界面:表示出现泄露的根源所在是singleton

上一篇下一篇

猜你喜欢

热点阅读