Что такое Garbage Collector Roots

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

Ответ

Garbage Collector Roots — это набор объектов, которые гарантированно доступны в приложении и служат отправной точкой для определения достижимых объектов при сборке мусора.

Основные типы корней:

  • Активные потоки (стек вызовов, локальные переменные)
  • Статические поля классов
  • JNI-ссылки (объекты, используемые в нативном коде)
  • Системные классы (загруженные класслоадером)

Пример:

class MyClass {
    companion object {
        val staticList = mutableListOf<Any>() // GC Root (статическое поле)
    }

    fun foo() {
        val localList = mutableListOf<Any>() // Локальная переменная — временный корень
    }
}

Недостижимые объекты (без ссылок от корней) удаляются при сборке мусора.