Почему Garbage Collector не может убить Activity на главном экране

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

Ответ

Activity на главном экране (например, MainActivity) не уничтожается GC, потому что на неё есть сильные ссылки из системы Android.

Ключевые причины:

  1. Activity хранится в стеке задач (back stack)
  2. На неё ссылается WindowManager через DecorView
  3. Жизненный цикл управляется системой, а не GC

Пример:

class MainActivity : AppCompatActivity() {
    // Активность удерживается системой пока видима
    override fun onCreate() {
        super.onCreate()
        setContentView(R.layout.activity_main)
    }
}

GC может собрать только Activity, на которую больше нет ссылок (например, после finish() и удаления из стека). Главная Activity всегда имеет активные ссылки, пока приложение запущено.