[英]What are GC roots for classes?
在 Java 中,有称为垃圾回收根(GC 根)的特殊对象。 它们充当垃圾收集标记机制的根对象(见图)。
本文介绍了四种类型的 GC 根:
还提到:
类本身可以被垃圾收集。
不会收集 GC 根,因此类本身不是 GC 根。
那么类的 GC 根是什么?
那么类的 GC 根是什么?
类加载器,有效 - 通过其他 GC 根。
如果没有任何东西可以到达类加载器——这意味着没有东西可以到达由该类加载器创建的任何类或这些类的任何实例——那么类加载器和它创建的类都有资格进行垃圾收集。 在此之前让它们保持活动状态是必要的,以便 Class::forName 和 ClassLoader::findClass 可以是幂等的,即使类的静态初始值设定项不是。
隐藏类(请参阅https://openjdk.java.net/jeps/371 )是此规则的例外。 作为 OpenJDK 的一个实现细节,使用 java.lang.reflect.Proxy 的静态方法创建的方法引用、lambda 和代理的类也是如此。 类加载器没有对这些类的强引用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.