Что такое Garbage Collector

«Что такое Garbage Collector» — вопрос из категории Управление памятью, который задают на 32% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Garbage Collector (GC) — это механизм автоматического управления памятью в Java/Kotlin, который освобождает память от неиспользуемых объектов. GC работает в фоновом режиме, определяя объекты, на которые нет ссылок (unreachable), и удаляет их, предотвращая утечки памяти.

Как работает:

  1. Mark — GC помечает все активные объекты (достижимые из корневых ссылок).
  2. Sweep — удаляет неотмеченные объекты.
  3. 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.