如何验证LeakCanary是否正常工作-我们无法在日志记录中看到LeakCanary

时间:2019-06-23 17:05:15

标签: android leakcanary

我有一个旧项目

  • 在Java中
  • 尚未迁移到AndroidX

最近,它在制作过程中充满了神秘感OutOfMemoryException

我们使用以下命令来找出根本原因

debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.6.3'
implementation 'com.squareup.leakcanary:leakcanary-android:1.6.3'

我们还在refWatcher = LeakCanary.install(this);的{​​{1}}中呼叫Application

但是,在完成上述所有操作并在Emulator中运行之后,我们使用过滤了Android Studio日志

  

D / LeakCanary

但是,我们看不到任何有关onCreate的日志。

我们错过了什么吗?

但是,我们看到0输出。

还有其他我们错过的事情吗?

3 个答案:

答案 0 :(得分:2)

您不需要添加

implementation 'com.squareup.leakcanary:leakcanary-android:1.6.3'

泄漏金丝雀的唯一依赖项是:

debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.6.3'

然后在您的Application onCreate方法中添加以下代码:

@Override
public void onCreate() {
    super.onCreate();

    if (LeakCanary.isInAnalyzerProcess(this)) {
        // This process is dedicated to LeakCanary for heap analysis.
        // You should not init your app in this process.
        return;
    }
    LeakCanary.install(this);

    // rest of your init code
}

之后,将安装带有以下图标的应用程序:

leak canary icon

现在,您只需要运行您的应用即可。当发生内存泄漏时,将显示一个对话框,指出检测到泄漏。

打开带有上述图标的应用程序时,您将看到带有泄漏跟踪的内存泄漏:

leak-trace

答案 1 :(得分:0)

您可以尝试MMAT,这是一个自动的android内存泄漏分析器,MMAT github page

答案 2 :(得分:0)

LeakCanary库现在已升级到2.x版本。

要使用LeakCanary,请在应用程序的build.gradle文件中添加leakcanary-android依赖项

dependencies {
  // debugImplementation because LeakCanary should only run in debug builds.
  debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.4'
}

就是这样,不需要更改代码!

通过过滤Logcat中的LeakCanary标记,确认LeakCanary在启动时运行:

D LeakCanary: LeakCanary is running and ready to detect leaks

来源:https://square.github.io/leakcanary/getting_started/