Как убедиться, что LeakCanary работает правильно - LeakCanary не отображается в журнале - PullRequest
0 голосов
/ 23 июня 2019

У меня есть устаревший проект, который

  • В 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); в нашем Application onCreate.

Но, после того как мы выполнили все вышеперечисленное и запустили в эмуляторе, мы отфильтровываем наш журнал Android Studio, используя

D / LeakCanary

Но мы не видим журналов, касающихся LeakCanary.

Есть что-то, что мы пропустили?

Но мы видим вывод 0.

Есть что-то еще, что мы пропустили?

1 Ответ

2 голосов
/ 25 июня 2019

вам не нужно добавлять

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

...