Ответ
Утечка памяти (memory leak) — ситуация, когда объект больше не используется, но не освобождается сборщиком мусора (GC), потому что на него остаётся ссылка. В Android чаще всего возникает из-за:
- Ссылки на Activity/Fragment в статическом поле или синглтоне
- Неотписанные подписки (RxJava, LiveData)
- Использование Context неверного типа (Application vs Activity)
- Анонимные классы (например, Handler/Runnable)
Пример утечки:
class LeakyActivity : AppCompatActivity() {
companion object {
var leakedContext: Context? = null
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
leakedContext = this // Утечка! Static хранит ссылку на Activity
}
}
Для поиска утечек используйте LeakCanary или Android Profiler.
Видео-ответы
▶
▶
▶
▶