LeakCanary работает в несколько этапов:
- Обнаружение утечки: Он отслеживает жизненный цикл наблюдаемых объектов, таких как Fragment, Activity, View. Когда такой объект уничтожается, LeakCanary помещает его в слабую ссылку (WeakReference) и запускает сборщик мусора.
- Проверка наличия ссылки: После сборки мусора LeakCanary проверяет, осталась ли ссылка на объект. Если ссылка все еще существует, это означает, что объект не был собран и, вероятно, произошла утечка.
- Дамп хипа: В случае обнаружения возможной утечки, LeakCanary делает дамп хипа (heap dump) приложения. Это снимок всей памяти, занимаемой объектами приложения в определенный момент времени.
- Анализ графа объектов: LeakCanary анализирует граф объектов в дампе хипа, чтобы найти путь от корней сборщика мусора (GC r