Где хранятся объекты в Garbage Collector

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

Ответ

В Android (JVM) объекты хранятся в куче (Heap), которая разделена на области:

  • Young Generation (Eden, Survivor 0/1) – новые объекты
  • Old Generation – долгоживущие объекты
  • Permanent Generation (метаданные классов, устарело в новых версиях)

При нехватке памяти GC удаляет недостижимые объекты. Пример утечки:

class LeakyActivity : Activity() {
    private val leak = staticList // static держит ссылку на Activity
    companion object {
        val staticList = mutableListOf<Any>()
    }
}

Key моменты:

  • Объекты создаются в Young Gen, пережившие сборки перемещаются в Old Gen
  • OutOfMemoryError – куча переполнена
  • Weak/SoftReference – управление жизненным циклом вручную