По порядку Senior Производительность и утечки памяти обновлено

Как LeakCanary находит утечку

Вопрос

Расставь шаги работы LeakCanary по порядку.

Попробуйте сами

Расставьте шаги по порядку стрелками.

  1. 1
    Через несколько секунд запускается сборка мусора
  2. 2
    Activity уничтожается, вызывается onDestroy
  3. 3
    Анализатор находит кратчайшую цепочку сильных ссылок до GC root
  4. 4
    Объект всё ещё достижим, и снимается дамп кучи
  5. 5
    LeakCanary кладёт Activity в ObjectWatcher через слабую ссылку
  6. 6
    Разработчик видит трассу утечки в уведомлении
Показать ответ и разбор

Коротко

LeakCanary наблюдает за объектами, которые должны умереть, и проверяет это после GC. Дамп кучи дорогой, поэтому снимается только когда есть удержанные объекты.

Правильный порядок

  1. 1
    Activity уничтожается, вызывается onDestroy
  2. 2
    LeakCanary кладёт Activity в ObjectWatcher через слабую ссылку
  3. 3
    Через несколько секунд запускается сборка мусора
  4. 4
    Объект всё ещё достижим, и снимается дамп кучи
  5. 5
    Анализатор находит кратчайшую цепочку сильных ссылок до GC root
  6. 6
    Разработчик видит трассу утечки в уведомлении

Разбор

LeakCanary наблюдает за объектами, которые должны умереть, и проверяет это после GC. Дамп кучи дорогой, поэтому снимается только когда есть удержанные объекты. Трасса показывает, какая ссылка мешает сборке, именно её и исправляют.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.