Ответ
Garbage Collector (GC) — это механизм автоматического управления памятью в Java/Kotlin, который освобождает память от неиспользуемых объектов. GC работает в фоновом режиме, определяя объекты, на которые нет ссылок (unreachable), и удаляет их, предотвращая утечки памяти.
Как работает:
- Mark — GC помечает все активные объекты (достижимые из корневых ссылок).
- Sweep — удаляет неотмеченные объекты.
- Compact (опционально) — уплотняет память для уменьшения фрагментации.
Пример утечки (избегай!):
class LeakyActivity : Activity() {
private val listener = object : SomeListener {
override fun onEvent() { /* ... */ }
}
// Если не отписаться, Activity не соберётся GC из-за ссылки на listener
}
Нюансы:
- GC может вызывать кратковременные лаги (STW — Stop-The-World).
System.gc()— лишь подсказка, не гарантирует сборку.- Weak/SoftReference — способы помочь GC.
Видео-ответы
▶
▶
▶
▶
▶
▶