`

Java 垃圾回收可达性分析算法

    博客分类:
  • Java
阅读更多

       在主流的商用程序语言(java、C#,甚至包含古老的Lisp)的主流实现中,都是称通过可达性分析(Reachability Analysis)来判断对象是否存活的。这个算法的基本思路就是通过一系列的称为“GC Roots”的对象作为起始点,从这些细节开始向下搜索,搜索所有走过的路径称为引用链(Reference Chain),当一个对象到GC Roots没有任何引用链接相连(用图论的话来说,就是从GC Roots到这个对象不可达)时,则证明此对象是不可用的。如下图所示,对象Object 5、Object 6、Object 7虽然相互关联,但是他们到GC Roots是不可达的,所以它们将会被判定为是可回收的对象。

    


 

    在Java语言中,可作为GC Roots的对象包含下面几种:

  1. 虚拟机栈(栈帧中的本地变量表)中引用的对象。
  2. 方法区中静态属性引用的对象。
  3. 方法区中常量引用的对象。
  4. 本地方法栈中JNI(即一般说的Native方法)引用的对象。  
  • 大小: 5.9 KB
分享到:
评论

相关推荐

    Java+JVM+垃圾回收机制

    一种是引用计数算法、一种是可达性分析算法。 2.有哪些重要的垃圾回收算法? 图画详细介绍常见的三种垃圾回收算法,包括标记-清除算法、标记-整理算法和标记-复制算法。 3.垃圾回收的具体流程是怎样的? 图画分析...

    JVM入门实战/arthas实战/垃圾回收算法/垃圾回收器/jvm内存模型分析

    第四节:垃圾回收算法 1.1标记清除算法 1.2复制算法 1.3 标记整理(标记压缩)算法 第五节:垃圾回收器 1.1Serial/Serial Old收集器 1.2 ParNew收集器 1.3Parallel Scavenge收集器 1.4Parallel Old收集器 1.5CMS...

    谈谈你对垃圾回收机制的了解?.docx

    可达性分析:这种类型的垃圾收集通常叫做跟踪性垃圾收集器。 原理很简单,就是将对象即及引用关系看着一个图。选定活动对象作为 GC Roots,然会跟踪引用链,如果一个对象和GC Roots之间不可达,也就是说不存在引用链...

    java虚拟机知识点整理

    1 标记-清除算法:首先标记所有需要回收的对象(引用计数或可达性分析算法标记),在标记完成后统一回收所有被标记的对象。 缺点:效率问题,标记和清除两个过程效率都不高,另一个是清除之后会产生大量不连续的内存...

    java高级工程师、技术专家、架构师、项目经理面试宝典.rar

    注意:垃圾回收回收的是无任何引用的对象占据的内存空间而不是对象本身,2、GC回收机制的两种算法,a、引用计数法 b、可达性分析算法 年轻代:是所有新对象产生的地方。 年老代:在年轻代中经历了N次回收后仍然...

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

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

    JAVA架构知识库整理 JAVA架构知识 Java架构师 Java 架构师必备

    2.1. 线柱2.2. JVM内存区域2.2.1. 程序计数器(线程私有).2.2.2. 虚拟机栈(线程私有)..2.2.3.... 可达性分析.2.4.2. 标记清除算法(Mark-Sweep)2.4.3. 复制算法(copying)2.4.4. 标记整理算法(Mark-Comp

    JVM 知识点整理:GC垃圾收集器及相关算法

    JVM 知识点整理:GC垃圾收集器判断哪些对象需要回收引用计数器算法可达性分析算法引用还有分类(了解)“缓刑” finalize(了解)开始垃圾收集标记 – 清除算法复制算法标记 – 整理算法分代收集算法HotSpot 算法...

    深入理解理解java虚拟机

     2,可达性分析算法:  java所使用的垃圾回收算法。  基本思想:通过一系列的名为“GC Root”的对象作为起点,从这些节点向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC Root没有...

    重磅2023年最新JAVA核心知识整理从基础到精通完整教程-283页全面试题解析学习资料涵项目源码-20231120.pdf

    1.目录 2.JVM 2.1.线程 2.2.JVM内存区域 2.2.1.程序计数器(线程私有) ...可达性分析 2.4.2.标记清除算法(Mark-Sweep) 2.4.3.复制算法(copying) 2.4.4.标记整理算法(Mark-Compact) 2.4.5.分代收集算法

    04.GC要做的事情1

    (1)哪些内存需要被回收 (2)什么时候回收 (3)如何回收 (1)引计数器 (2)可达性分析算法 (1)虚拟机栈(栈帧中本地变量表)中引的对象 (2)法区中类

    深入理解Java虚拟机视频教程(jvm性能调优+内存模型+虚拟机原理)视频教程

    第34节垃圾回收-判断对象是否存活算法-可达性分析法详解00:07:09分钟 | 第35节垃圾回收算法-标记清除算法00:04:36分钟 | 第36节垃圾回收算法-复制算法00:14:35分钟 | 第37节垃圾回收算法-标记整理算法和分代收集...

    类和对象的生命周期

    目录1、类加载2、使用2.1对象实例化2.1.1 为Student对象分配空间2.1.2对象的内存布局2.1.3对象的访问定位直接访问句柄访问2.2、垃圾收集2.2.1、回收区域、何时回收2.2.1.1 回收内容(可达性分析算法)2.2.2、如何...

    Java虚拟机

    3.2.2 可达性分析算法 3.2.3 再谈引用 3.2.4 生存还是死亡 3.2.5 回收方法区 3.3 垃圾收集算法 3.3.1 标记-清除算法 3.3.2 复制算法 3.3.3 标记-整理算法 3.3.4 分代收集算法 3.4 HotSpot的算法实现 3.4.1...

    JVM讲解视频.zip

    o可达性分析算法(主流使用) 收集算法 o复制算法 o标记清除算法 o标记整理算法 对象位置控制 o老年代内存分配担保机制 o对象动态年龄判断机制 o垃圾收集器 Serial垃圾收集器详解 ParNew垃圾收集器详解 ...

    深入理解JVM内存结构及运行原理全套视频加资料.txt

     第34讲 垃圾回收-判断对象是否存活算法-可达性分析法详解 00:07:09  第35讲 垃圾回收算法-标记清除算法 00:04:36  第36讲 垃圾回收算法-复制算法 00:14:35  第37讲 垃圾回收算法-标记整理算法和分代收集...

    JAVA核心知识点整理_美团十年.rar

    可达性分析............................................................................................................................................... 26 2.4.2. 标记清除算法(Mark-Sweep) ...........

    java核心知识点整理.pdf

    可达性分析............................................................................................................................................... 26 2.3.2. 2.3.3. 老年代 ........................

    JAVA核心知识点整理(有效)

    可达性分析............................................................................................................................................... 26 2.3.2. 2.3.3. 老年代 ........................

Global site tag (gtag.js) - Google Analytics