可达性分析算法

内容概述

当前主流的商用JVM都采用可达性分析算法来判断对象是否存活。这个算法的基本思路就是通过一系列称为"GC Roots"的根对象作为起始点,从这些节点开始根据引用关系向下搜索,搜索过程所走过的路径称为引用链,当一个对象到任何GC Roots都没有引用链相连时,则证明此对象是不可用的,可以被回收。

可达性分析算法将 Java 堆视为一个有向图 。它不再纠结于单纯的引用计数,而是通过一组被称为 GC Roots 的节点(如栈中引用的对象、静态属性)作为起点,进行深度优先搜索

搜索过程中走过的路径即为"引用链"。如果一个对象无法通过任何路径连接到 GC Roots,哪怕它持有循环引用,也会被判定为"垃圾"。这是 G1、CMS 等现代收集器的核心逻辑。

思考一下

问题: 如果 GC Roots 集合被错误地清空,会发生什么?

提示: 考虑整个堆内存中的对象是否会被瞬间全部回收,包括正在使用的核心对象。

相关推荐
weisian15111 小时前
JVM--19-面试题5:说说JVM的类加载机制和双亲委派模型
jvm·双亲委派模型·jvm类加载机制
亓才孓12 小时前
【反射机制】
java·javascript·jvm
Volunteer Technology13 小时前
JVM之性能优化
jvm·python·性能优化
Andy Dennis13 小时前
Java语法注意事项
java·开发语言·jvm
坚持的小马14 小时前
JVM相关笔记-jps
jvm·笔记
昱宸星光14 小时前
Xnio源码分析
java·jvm·spring
@insist12314 小时前
软考-数据库系统工程师-计算机存储层次结构与性能优化核心知识点
大数据·jvm·数据库
乂爻yiyao15 小时前
Minecraft 服务端 JVM 调优指南(低资源 / 非专用服务器专用)
运维·服务器·jvm
senijusene15 小时前
Linux软件编程: 线程属性与线程间通信详解
java·linux·jvm·算法
J_liaty1 天前
JVM调优完全指南:从垃圾回收到CPU 100%再到OOM全解析
jvm