什么是 gc root

news/2025/2/7 8:09:57/

GC Roots原理
GC Roots基本思路就是通过一系列的称为“GC Roots”的对象作为起始点, 从这些节点开始向下搜索, 搜索所走过的路径称为引用链( Reference Chain),当一个对象到 GC Roots 没有任何引用链相连( 用图论的话来 说,就是从GC Roots到这个对象不可达)时,则证明此对象是不可用的。

GC Roots对象
常说的GC(Garbage Collector) Roots,特指的是垃圾收集器(Garbage Collector)的对象,GC会收集那些不是GC Roots且没有被GC Roots引用的对象。
一个对象可以属于多个root,GC Roots有以下几种:

Class - 由系统类加载器(system class loader)加载的对象,这些类是不能够被回收的,他们可以以静态字段的方式保存持有其它对象。我们需要注意的一点就是,通过用户自定义的类加载器加载的类,除非相应的Java.lang.Class实例以其它的某种(或多种)方式成为roots,否则它们并不是roots,.
Thread - 活着的线程
Stack Local - Java方法的local变量或参数
JNI Local - JNI方法的local变量或参数
JNI Global - 全局JNI引用
Monitor Used - 用于同步的监控对象
Held by JVM - 用于JVM特殊目的由GC保留的对象,但实际上这个与JVM的实现是有关的。可能已知的一些类型是:系统类加载器、一些JVM知道的重要的异常类、一些用于处理异常的预分配对象以及一些自定义的类加载器等。然而,JVM并没有为这些对象提供其它的信息,因此需要去确定哪些是属于"JVM持有"的了。


http://www.ppmy.cn/news/882187.html

相关文章

频繁gc是什么意思_经常听到的期货黄金gc是什么意思?

期货黄金gc是什么意思?估计有很多人都不了解吧,想要投资期货黄金就要知道。接下来Followme小编告诉你具体情况吧! 期货黄金gc是什么意思?Gc是黄金期货的一个SP代码,交易的货币是美元和交易时间是06:00-05&a…

linux查看gc日志,GC通用日志解读

jvm系列 序 本文主要讲述gc日志的解读。除了CMS和G1收集器的GC稍微特殊外,其展示形式其实都大同小异。 通用日志格式 各个收集器的日志都维持一定的共性,例如以下两段典型的GC日志: 33.125: [GC [DefNew: 3324K->152K(3712K), 0.0025925 secs] 3324K->152K(11904K), 0…

Full GC 和 Minor GC

目录 Full GC Full GC的触发条件 Minor GC 触发条件 Minor GC的过程 Survivor区对象晋升位老年代对象的条件 Minor GC的问题与卡表分析 关于 Major GC的说明 小结 参考资料 & 鸣谢 Full GC Full GC 就是收集整个堆,包括新生代,老年代等收…

JVM:28 面试题:解释一下什么是Young GC和Full GC?

(1)Minor GC / Young GC “新生代” 也可以称之为 “年轻代” ,这两个名词是等价的。在年轻代中的Eden内存区域被占满之后实际上就需要出发年轻代的GC,或者是新生代的GC。 此时这个新生代GC,就是所谓的 “Minor GC”…

频繁gc是什么意思_linux查看是否频繁gc

1.监控GC的状态 使用各种JVM工具,查看当前日志,分析当前JVM参数设置,并且分析当前堆内存快照和gc日志,根据实际的各区域内存划分和GC执行时间,觉得是否进行优化。 举一个例子: 系统崩溃前的一些现象: 每次垃圾回收的时间越来越长,由之前的10ms延长到50ms左右,FullGC的…

Minor GC、Young GC、Old GC、Major GC、Mixed GC、Full GC都是什么?

文章目录 各个GC的概念1、Minor GC和Young GC2、Old GC和Major GC3、Mixed GC4、Full GC 两个大类partial GC和Full GC:各个GC的触发条件触发young GC触发Full GC触发Major GC/Old GC触发Mixed GC 各个GC的概念 1、Minor GC和Young GC Minor GC 和 Young GC&#…

什么是GC Root

1 GC ROOT的定义 我们知道,JVM中判断一个对象是否标记为可回收的对象是根据可达性分析算法,顾名思义,可达性分析需要知道当前对象(是否需要回收的对象)的起点,而这个起点对象在当前时刻一定是存活的&#…

JAVA GC是什么?为什么要有GC?

GC是垃圾收集的意思。 内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃。 Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法…