What are GC roots for classes?

In Java, there are special objects called Garbage Collection Roots (GC roots). They serve as a root objects for Garbage Collection marking mechanism (see picture).

enter image description here

This article describes four types of GC roots:

  • local variables
  • active threads
  • static variables
  • JNI references

It is also mentioned, that:

Classes themselves can be garbage-collected.

GC roots aren't collected thus classes themselves are not GC roots.

So what are GC roots for the classes?

Jon Skeet
people
quotationmark

So what are GC roots for the classes?

Classloaders, effectively - via other GC roots.

If there is nothing which can reach a classloader - which means nothing can reach any instances of classes created by that classloader - then both the classloader and the classes it created are eligible for garbage collection.

people

See more on this question at Stackoverflow