垃圾对象判定算法

目录

垃圾对象

引用计数法

可达性分析法

三色标记法

[常见的可作为 GCRoots 的对象](#常见的可作为 GCRoots 的对象)


垃圾对象

指的是程序运行过程中,已经没有任何指针指向的对象,是垃圾收集机制回收的目标对象

引用计数法

对象自身携带一个引用计数器,用于记录当前有多少个引用指向它,当计数器的值为 0 意味着没有任何一个引用指向它,该对象就是垃圾对象。但是这种算法有严重的缺陷,就是无法处理两个或多个对象间的循环引用问题,正是这个原因,Java 中并没有采用这种算法作为判定存活对象和垃圾对象的算法

可达性分析法

存在一个 GCRoots 的概念,从 GCRoots 出发进行引用搜索,形成引用链,当对象没有被任何一条引用链连接时,即为垃圾对象

三色标记法

CMS、G1 等并发垃圾收集器追求低延迟,并发标记引用三色标记法,可以让 JVM 在垃圾收集时只需要短暂的 STW 即可实现存活对象的标记,CMS 收集器以及不分代收集器能做到低延迟的根本原因就是使用了三色标记法

常见的可作为 GCRoots 的对象

  • 栈中局部变量引用的对象
  • 静态变量引用的对象
  • 同步监视器 Monitor 中持有的对象
相关推荐
leisoo809731 分钟前
股票筹码分布怎么用获利比例成本区间与集中度实战 IG50免费开源股票数据API接口
开发语言·jvm·数据库·python·开源
晒太羊的猫15 小时前
jvm面试题
jvm
夜之眷属19 小时前
Core dump 崩溃排查:JVM 宕机后,那份 core 文件怎么用 gdb 还原现场
java·运维·服务器·jvm
用户0942485680320 小时前
第31章:JVM字节码解释器与模板解释器源码路径
java·jvm
阿俊-全栈开发1 天前
LikeShop 版本升级与备份:从旧版平滑迁移的完整步骤
jvm·数据库·oracle·开源·likeshop·likeshop开源商城
Nebula_g1 天前
JavaSE加强:线程Thread(线程安全重点)
java·开发语言·jvm·算法·javase·技术栈
JAVA面经实录9171 天前
Java高级后端 · 全套面试通关手册(线上故障排查)
java·jvm·面试
sibylyue1 天前
SQLite 运行模式
java·jvm·sqlite
toooooop81 天前
宝塔Python项目管理器:环境变量踩坑记录
java·jvm·python
佳児素花痴╮2 天前
线程知识点
java·开发语言·jvm