gpt4 book ai didi

java - 什么是类的 GC 根?

转载 作者:IT老高 更新时间:2023-10-28 20:53:35 25 4
gpt4 key购买 nike

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

enter image description here

This article描述了四种类型的 GC 根:

  • 局部变量
  • 活跃的话题
  • 静态变量
  • JNI 引用

还提到:

Classes themselves can be garbage-collected.

没有收集 GC 根,因此类本身不是 GC 根。

那么类的 GC 根是什么?

最佳答案

So what are GC roots for the classes?

类加载器,有效地 - 通过其他 GC 根。

如果没有任何东西可以到达类加载器——这意味着没有任何东西可以到达由该类加载器创建的任何类或这些类的任何实例——那么类加载器和它创建的类都可以进行垃圾回收。在此之前保持它们处于 Activity 状态是必要的,以便 Class::forName 和 ClassLoader::findClass 即使在类的静态初始化器不是时也可以是幂等的。

隐藏类(见 https://openjdk.java.net/jeps/371)是这条规则的异常(exception)。作为 OpenJDK 的一个实现细节,使用 java.lang.reflect.Proxy 的静态方法创建的方法引用、lambda 和代理类也是如此。类加载器不持有对这些类的强引用。

关于java - 什么是类的 GC 根?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27186799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com