Как найти причину утечки памяти в Android с LeakCanary
Утечка возникает, когда приложение сохраняет ссылку на уже ненужный объект. LeakCanary строит leak trace: цепочку сильных ссылок от неудаляемого корня сборщика мусора до удерживаемого объекта. По состоянию и жизненному циклу объектов инструмент сокращает список подозрительных ссылок.
В примере из статьи синглтон Application хранит TextView в списке. TextView через поле mContext удерживает уничтоженную MainActivity. Такая цепочка указывает, где искать причину: View добавили в долгоживущую коллекцию приложения.
В руководстве LeakCanary разложены четыре этапа: получить цепочку, сузить подозрения, найти ссылку, которая вызывает утечку, и убрать её. LeakCanary выполняет первые два этапа, а решение в коде остаётся разработчику.
Post #4737
1.14K