Ответ
Garbage Collector (GC) в Android работает с кучей (Heap) — областью памяти, где хранятся объекты, созданные во время выполнения приложения. Он автоматически освобождает память, удаляя объекты, на которые нет активных ссылок.
Особенности:
- Young Generation (Eden, Survivor spaces) — для краткоживущих объектов.
- Old Generation — для долгоживущих объектов.
- Permanent Generation (до Android 5.0) — метаданные классов (заменена на ART с компактирующим GC).
Пример утечки:
class LeakyActivity : Activity() {
private val leak = staticList // Статическое поле держит ссылку на Activity
companion object {
val staticList = mutableListOf<Any>()
}
}
Решение: избегать статических ссылок на контекст/View.