`

什么是GC Roots

阅读更多

GC Root

 

常说的GC(Garbage Collector) roots,特指的是垃圾收集器(Garbage Collector)的对象,GC会收集那些不是GC roots且没有被GC roots引用的对象。

一个对象可以属于多个root,GC root有几下种:

  • 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持有"的了。
分享到:
评论

相关推荐

    JVM 38 道面试题及答案.docx

    * 什么是 GC Roots?GC Roots 大体包括活动线程相关的各种引用、类的静态变量的引用、JNI 引用等。 七、JVM 参数调优 * 如何查看 JVM 系统默认值?使用-XX:+PrintFlagsFinal 参数。 * 平时工作中用过的 JVM 常用...

    java垃圾回收(gc)机制详解.pdf

    如果一个对象在GC Roots的引用链之外,即无法从GC Roots追踪到该对象,该对象则被认为是不可达的,可以被回收。GC Roots包括虚拟机栈中引用的对象、方法区中的类静态属性引用的对象、常量引用的对象以及本地方法栈中...

    gc回收机制

    在可达性分析中,如果一个对象没有任何引用链与GC Roots相连,那么它将被视为垃圾。 3. **垃圾收集**:一旦识别出垃圾对象,GC就会进行垃圾收集,释放这些对象占用的内存空间。收集过程可能会涉及对象的移动,以便...

    大厂真题之京东-Java实习生

    利用可达性分析算法,虚拟机会将一些对象定义为 GC Roots,从 GC Roots 出发沿着引用链 向下寻找,如果某个对象不能通过 GC Roots 寻找到,虚拟机就认为该对象可以被回收掉。 1.1 哪些对象可以被看做是 GC Roots 呢...

    Java 内存区域和GC机制

    - **GC Roots**:GC开始回收的起点,包括虚拟机栈中引用的对象、方法区中静态字段引用的对象等。 - **新生代和老年代**:Java堆被划分为新生代(Eden和两个Survivor区)和老年代,不同的GC算法针对这两个区域进行...

    JVM内存管理-GC模型-编写GC友好的代码.pdf

    - **根搜索算法**: 从一系列称为“GC Roots”的对象出发向下搜索,若对象到GC Roots没有引用链,则认为该对象是垃圾。 - GC Roots包括:JVM栈中的引用变量、方法区中的静态引用、JNI中的引用。 - **常见GC算法**:...

    JAVA中对GC的理解

    - 可达性分析法:从一组称为GC Roots的对象出发,遍历其引用链,无法到达GC Roots的对象被认为是不可达的,因此可以被回收。这是目前主流的垃圾识别方法。 2. **垃圾回收算法**: - 标记-清除算法:首先标记所有...

    GC算法和收集器.pdf

    它通过一系列被称为GC Roots的对象作为起点进行搜索,如果一个对象没有任何引用链与GC Roots相连接,那么这个对象就会被标记为可以回收。GC Roots包括类加载器、线程、虚拟机栈的本地变量表、static成员、常量引用和...

    一篇文章教你深入理解Java垃圾收集(GC)机制.docx

    - 可达性分析:Java采用这种方式,从一组称为GC Roots的对象出发,遍历其引用链,无法从GC Roots到达的对象被认为是不可达的,即可以被回收。GC Roots包括虚拟机栈中的引用、本地方法栈的JNI引用、类的静态属性引用...

    AndroidGC原理探究UI

    1、JVM内存回收机制1.1回收算法标记回收算法(MarkandSweepGC)从”GCRoots”集合开始,将内存整个遍历一次,保留所有可以被GCRoots直接或间接引用到的对象,而剩下的对象都当作垃圾对待并回收,这个算法需要中断...

    04.GC要做的事情1

    可达性分析算法基本思路就是通过一些列的GC Roots对象作为起始点、从这些节点的开始向下搜索,搜索所经过的路径成为引用链,当一个对象到GC Roots没有任何引用链相连时,则证明这个对象是不可用的,因此判断为可回收...

    JVM初探- 内存分配、GC原理与垃圾收集器

    该算法通过一系列被称为GC Roots的对象作为起点,向下搜索,如果一个对象到GC Roots没有任何引用链相连,那么该对象被认为是不可达的,也就是不可用的,从而被回收。值得注意的是,对象并非一被判定为不可达就立即...

    java gc

    如果一个对象到GC Roots没有任何引用链相连,那么这个对象被认为是不可达的,即可被标记为垃圾。 2. 垃圾收集器: - Serial GC:单线程的垃圾收集器,适用于轻量级应用或者客户端应用。 - ParNew GC:Serial GC的...

    白话说java gc垃圾回收.docx

    从一组称为GC Roots的特殊对象开始,包括虚拟机栈中引用的对象、方法区中的静态属性和常量引用的对象以及本地方法栈中的JNI引用的对象。如果一个对象无法从GC Roots通过引用链到达,那么这个对象就被认为是不可达的...

    一文看懂Java垃圾回收.pdf

    GC Roots通常包括虚拟机栈中的本地变量表、方法区中的静态属性引用、常量池中的引用以及Java本地方法栈中的对象。 Java内存区域分为几个部分,其中涉及到GC Roots的部分包括: 1. **虚拟机栈(栈帧中的本地变量表)...

    「入门篇」初识JVM (下下) - GC.doc

    2. **可达性分析算法**:这是目前主流的垃圾收集策略,通过从一组称为GC Roots的对象开始遍历引用链,如果某个对象无法从GC Roots到达,那么它就是不可达的,可以被回收。GC Roots通常包括虚拟机栈中的引用对象、...

    第6节: GC垃圾回收-02

    这是Hotspot JVM采用的算法,通过从一系列称为“GC Roots”的对象出发,遍历所有可达的对象,不可达的对象被视为垃圾。 ### **垃圾回收步骤** 1. **标记**:标记所有从GC Roots可达的对象。 2. **清理/整理**:清除...

Global site tag (gtag.js) - Google Analytics