Что такое утечки памяти? Как найти?
Утечки памяти (Memory Leaks) — это ситуации, когда приложение не освобождает используемую память после её использования, что со временем может привести к замедлению работы, падениям или повышенному потреблению ресурсов.
1. Что вызывает утечки памяти
Неправильное управление объектами
Ссылки на объекты остаются в памяти, хотя они больше не нужны.
Замыкания и анонимные классы (Java/Kotlin)
Сохраняют ссылку на Activity или Context.
Слушатели и колбэки
Не удаляются после закрытия экрана.
Неправильное использование коллекций
Добавление объектов в глобальные списки или кэши без очистки.
2. Как найти утечки памяти
Для Android
Android Studio Profiler
Инструмент для анализа использования памяти в реальном времени.
Позволяет увидеть: текущие объекты в памяти, объём памяти, GC (garbage collection).
LeakCanary
Библиотека, автоматически отслеживающая утечки Activity и Fragment.
Показывает стек вызовов, где объект удерживается.
Heap Dumps
Снимаем снимок кучи памяти (heap dump) через Android Studio.
Анализируем объекты, которые не были очищены.
Для iOS
Xcode Instruments → Leaks
Позволяет выявить объекты, которые не освобождаются.
Memory Graph Debugger
Визуализация связей объектов и удерживающих ссылок.
3. Симптомы утечки памяти
Постепенное увеличение потребления памяти при использовании приложения.
Замедление работы или зависания.
Частые сбои с ошибкой OutOfMemoryError (Android) или EXC_BAD_ACCESS (iOS).
4. Как предотвратить утечки
Использовать слабые ссылки (
WeakReference
) для слушателей и колбэков.Отписываться от слушателей при уничтожении Activity/Fragment.
Очистка кэшей и коллекций.
Использовать современные библиотеки управления жизненным циклом (LiveData, ViewModel).
Итог: утечки памяти — это объекты, которые остаются в памяти после завершения работы, и их находят с помощью профилировщиков, heap dumps, LeakCanary (Android) или Instruments (iOS).
Last updated
Was this helpful?