Каковы корни GC для классов?

В Java существуют специальные объекты, называемые Roots Collection Roots (корни GC). Они служат корневыми объектами для механизма маркировки мусора (см. Рисунок).

enter image description here

В этой статье описываются четыре типа корней GC:

  • локальные переменные
  • активные потоки
  • статические переменные
  • Ссылки JNI

Также упоминается, что:

сами классы могут быть собраны в мусор.

GC-корни не собираются, поэтому сами классы не являются корнями GC.

Итак, каковы корни GC для классов?

Ответ 1

Итак, каковы корни GC для классов?

Classloaders, эффективно - через другие корни GC.

Если нет ничего, что может дойти до загрузчика классов, что означает, что ничто не может достигнуть каких-либо экземпляров классов, созданных этим загрузчиком классов, - тогда как загрузчик классов, так и созданные классы имеют право на сбор мусора.

Ответ 2

Корень сборки мусора - это объект, который доступен снаружи кучи.

Memory Analyzer классифицирует корни сборки мусора согласно следующему списку:

  1. Класс загружается системой ClassLoader
    • статическое поле в классах JDK (java. * и т.д.)
  2. Живая нить
    • стек -local переменные, параметры метода
    • java.lang.Thread instance
  3. Объект удерживается как монитор синхронизации
  4. JNI ссылки
  5. JVM специальные...

Источник 1 Источник 2