Ответ
Garbage Collector Roots — это набор объектов, которые гарантированно доступны в приложении и служат отправной точкой для определения достижимых объектов при сборке мусора.
Основные типы корней:
- Активные потоки (стек вызовов, локальные переменные)
- Статические поля классов
- JNI-ссылки (объекты, используемые в нативном коде)
- Системные классы (загруженные класслоадером)
Пример:
class MyClass {
companion object {
val staticList = mutableListOf<Any>() // GC Root (статическое поле)
}
fun foo() {
val localList = mutableListOf<Any>() // Локальная переменная — временный корень
}
}
Недостижимые объекты (без ссылок от корней) удаляются при сборке мусора.