课程的GC根源是什么?

Kao*_*Kao 21 java garbage-collection jvm

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

在此输入图像描述

本文介绍了四种GC根类型:

  • 局部变量
  • 活动线程
  • 静态变量
  • JNI引用

还提到:

类本身可以被垃圾收集.

不收集GC根,因此类本身不是GC根.

那么课程的GC根源是什么?

Jon*_*eet 15

那么课程的GC根源是什么?

有效的类加载器 - 通过其他GC根源.

如果没有任何东西可以到达类加载器 - 这意味着没有任何东西可以到达由该类加载器创建的类的任何实例 - 那么类加载器和它创建的类都有资格进行垃圾收集.

  • 只是官方 oracle 文档将 permgen 称为堆的一部分,但通常在社区中 **heap = [young gen] + [old gen]** (2认同)

Pre*_*raj 6

垃圾回收根是可以从堆外部访问的对象。

内存分析器根据以下列表对垃圾回收根进行分类:

  1. 由系统ClassLoader加载的类
    • JDK类中的静态字段(java。*等)
  2. 活动线程
    • stack -local vars,方法参数
    • java.lang.Thread 实例
  3. 对象保持为同步监视器
  4. JNI参考
  5. JVM特价...

来源1 来源2

  • YourKit 文档中也有很好的参考:https://www.yourkit.com/docs/java/help/gc_roots.jsp (2认同)