В каких случаях вызывается Garbage Collector

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

Ответ

Garbage Collector (GC) в Android вызывается автоматически, когда система обнаруживает нехватку памяти или когда объекты больше не имеют активных ссылок. Основные триггеры:

  1. Недостаток памяти – система пытается освободить место перед OutOfMemoryError.
  2. Сборка мусора по поколениям – чаще чистит молодые объекты (minor GC), реже – старые (major GC).
  3. Явный вызов System.gc() – но это лишь рекомендация, не гарантия.

Пример утечки (избегай!):

class LeakyActivity : Activity() {
    private val staticList = mutableListOf<Any>()

    override fun onCreate() {
        super.onCreate()
        staticList.add(this) // Активность не соберется, пока жива staticList!
    }
}