在Java中,有一些特殊的对象称为垃圾收集根 (GC根)。它们作为垃圾收集标记机制的根对象(见图)。

这篇文章描述了四种GC根类型:
还提到:
类本身可以被垃圾收集。
GC根不被收集,因此类本身不是GC根。
那么这些类的GC根是什么呢?
发布于 2014-11-28 10:38:03
那么这些类的GC根是什么呢?
类加载器,有效地-通过其他GC根。
如果没有任何东西可以到达类加载器--这意味着什么都不能到达由该类加载器创建的任何类或这些类的任何实例--那么类加载器及其创建的类都有资格进行垃圾收集。在此之前保持它们的活动是必要的,这样即使类的静态初始化器不是,Class::forName和ClassLoader::findClass也可以是幂等的。
隐藏类(请参阅https://openjdk.java.net/jeps/371)是此规则的例外。作为OpenJDK的实现细节,使用java.lang.reflect.Proxy的静态方法创建的方法引用、lambda和代理类也是如此。类加载器不包含对这些类的强引用。
https://stackoverflow.com/questions/27186799
复制相似问题