Работал ли с LeakCanary

Ответ

Да, работал. LeakCanary — это библиотека для обнаружения утечек памяти в Android-приложениях. Она автоматически находит утечки и предоставляет понятный стек вызовов, помогая быстро их исправить.

Настройка:

dependencies {
  debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.12'
}

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

Пример утечки:

class MainActivity : AppCompatActivity() {
    private val leakedSingleton = Singleton.getInstance() // Утечка, если Singleton хранит ссылку на Activity
}

Плюсы:

  • Простота интеграции
  • Наглядные отчеты
  • Поддержка Kotlin и Java

Минусы:

  • Увеличивает размер APK в debug-сборке
  • Может замедлять работу в debug-режиме

Использую его в каждом проекте для отладки утечек памяти.

Ответ 18+ 🔞

А, ну LeakCanary, да, работал, конечно. Эта штука — просто подарок для андроид-разработчика, который устал гадать, куда девается оперативка. Библиотека, которая сама ловит утечки памяти и потом тебе, с покерфейсом, такой: «На, мужик, разбирайся, вот тут у тебя всё потекло». Ёпта, красота же.

Настройка — проще некуда:

dependencies {
  debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.12'
}

Вот и всё, блядь. Подключил — и он уже в фоне, как хитрая жопа, следит за твоими Activity, Fragment, ViewModel и прочим добром. Как только что-то начинает висеть в памяти дольше положенного — тут же тебе уведомление на телефон: «Э, сабака сука, у тебя тут память течёт!». И не просто кричит, а даёт полный отчёт, со стектрейсом, чтобы ты понимал, откуда ноги растут. Удивление пиздец, насколько это удобно.

Вот, смотри, классический пример, где всё идёт по пизде:

class MainActivity : AppCompatActivity() {
    private val leakedSingleton = Singleton.getInstance() // Вот тут и начинается пиздец, если Singleton наглухо привязался к Activity
}

Сделал такую лажу — и всё, привет, утечка. А LeakCanary тебе это сразу подсветит, не будет ждать, пока приложение накрылось медным тазом.

Что в нём офигенно:

  • Ставится в два клика, реально.
  • Отчёты — просто песня, там всё разжёвано, даже мне, тупому, понятно.
  • Работает и на Kotlin, и на Java — всем сестрам по серьгам.

Но и минусы, куда без них:

  • В debug-сборке апк немного раздувается, да. Но кому в дебаге размер апк важен? Да похуй, честно.
  • В отладочном режиме может чуть-чуть притормаживать, потому что он же постоянно мониторит, бздит там на фоне. Но это терпимо, ради чистоты кода.

Я эту библиотеку теперь в каждый проект тыкаю по умолчанию. Потому что доверия ебать ноль к себе самому — всегда где-нибудь да оставлю ссылочку, которая потом аукнется. А так — поставил и спишь спокойно. Рекомендую, чувак, не пожалеешь.