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