Ответ
GC Roots — это набор объектов, которые гарантированно доступны в приложении и служат отправными точками для сборщика мусора (GC) при определении достижимых объектов. Если объект не достижим через цепочку ссылок от GC Roots, он считается мусором и удаляется.
Основные типы GC Roots в Android:
- Активные потоки (Thread)
- Статические поля (static variables)
- Локальные переменные в стеке (local variables)
- JNI references
- Системные классы загрузчика (ClassLoader)
Пример:
class MyActivity : Activity() {
companion object {
val staticList = mutableListOf<String>() // GC Root (static)
}
private val instanceList = mutableListOf<String>() // Не GC Root
override fun onCreate() {
val localList = mutableListOf<String>() // GC Root (пока метод выполняется)
}
}