Назад к вопросам
Middle
96
questionbank

Что такое корни сборщика мусора (Garbage Collector Roots)?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Корни сборщика мусора (GC Roots) — это специальные объекты, которые считаются всегда достижимыми и с которых начинается трассировка достижимых объектов в куче. Объекты, недостижимые из корней, считаются мусором и подлежат сборке.

Типичные корни:

  • Системные классы: Загрузчики классов, статические поля системных классов.
  • Активные потоки: Объекты Thread для работающих потоков, их стеки и локальные переменные.
  • Статические переменные: Статические поля классов.
  • JNI ссылки: Объекты, к которым есть ссылки из нативного кода.
  • Мониторы: Объекты, на которых используются мониторы (например, блокировки с synchronized).
  • JVM Внутренние ссылки: Некоторые объекты, используемые самой JVM.

Пример (псевдокод):

class MyClass {
    static String staticField = "I am a root"; // Статическое поле - возможный корень
    String instanceField = "I am reachable from a root if the instance is reachable";

    public static void main(String[] args) {
        MyClass instance = new MyClass(); // Переменная в стеке активного потока - корень
        // instance и ее instanceField достижимы.

        // Если instance = null;  в этот момент, инстанс станет недостижимым
        // из корней (если нет других сильных ссылок).
    }
}