30K ·GitHub
Что это?
LeakCanary — это библиотека для обнаружения утечек памяти в Android-приложениях, созданная компанией Square.
Это библиотека, которую я добавляю в приложение, или отдельный инструмент?
Это библиотека, которую вы подключаете к своему Android-проекту как зависимость для отладки. Она работает внутри приложения во время разработки и следит за утекающими объектами. Это не отдельное приложение и не сервис.
Как добавить её в мой Android-проект?
Добавьте LeakCanary как зависимость debugImplementation в build.gradle вашего приложения, чтобы она попадала только в отладочные сборки. Затем запустите приложение как обычно: отслеживание утечек начнётся автоматически.
Нужна ли мне особая среда для работы с ней?
Нужен только Android-проект на Java или Kotlin. Сам LeakCanary написан на Kotlin и предназначен для Android-приложений.
Замедлит ли она релизные сборки?
Нет, её задумано подключать как зависимость только для отладки. Поэтому она вырезается из релизных сборок и не влияет на производительность в продакшене.
Как LeakCanary на самом деле обнаруживает утечку?
Он отслеживает объекты, которые должны быть удалены сборщиком мусора (например, уничтоженные Activity или Fragment). Если такие объекты не удалены спустя некоторое время, он снимает дамп кучи и анализирует его, чтобы найти путь удержания, который вызывает утечку.
Что за анализатор кучи Shark, о котором упоминается в CI проекта?
Shark — это библиотека для анализа кучи, которую LeakCanary использует внутри для разбора дампов кучи и построения трасс утечек. В репозитории есть отдельные workflow для её выпуска.
Зачем использовать LeakCanary, а не снимать дампы кучи вручную в Android Studio?
LeakCanary автоматизирует весь процесс прямо в приложении. Он выводит трассы утечек в виде понятного отчёта, похожего на стек вызовов, сразу как утечка происходит. Не нужно вручную снимать и изучать файлы .hprof.
What are similar projects?
memray, logger, timber, butterknife, MPAndroidChart, Luban, fresco, DoKit
Which topics is it in?
profiler, kotlin-android, android-library, debugging, mobile-development, kotlin, testing, java, performance, android, apache-2.0, library