Что происходит в куче если объект больше не нужен

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

Ответ

Когда объект в куче становится недостижимым (нет активных ссылок на него), он помечается как мусор. Сборщик мусора (GC) периодически сканирует кучу, находит такие объекты и освобождает занимаемую ими память. В Android используется generational GC:

  • Молодое поколение (Young Generation) – объекты живут недолго, GC работает часто
  • Старое поколение (Old Generation) – выжившие объекты перемещаются сюда, GC реже

Пример:

fun createTempObject() {
    val temp = Any() // Создается в куче
} // После выхода из функции temp становится недостижим

GC не гарантирует мгновенное удаление – память освобождается при нехватке или по расписанию.