垃圾对象判定算法

目录

垃圾对象

引用计数法

可达性分析法

三色标记法

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


垃圾对象

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

引用计数法

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

可达性分析法

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

三色标记法

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

常见的可作为 GCRoots 的对象

  • 栈中局部变量引用的对象
  • 静态变量引用的对象
  • 同步监视器 Monitor 中持有的对象
相关推荐
LiAo_1996_Y2 小时前
mysql如何限制特定存储过程执行权限_MySQL存储过程安全访问
jvm·数据库·python
z4424753262 小时前
新买的电脑装哪个HTML函数工具最匹配_开箱即用教程【教程】
jvm·数据库·python
m0_734949792 小时前
如何结合计划任务实现自动定时备份任务配置_全自动化运维管理
jvm·数据库·python
PSLoverS3 小时前
c++如何读取和修改可执行文件的PE头信息_IMAGE_NT_HEADERS解析【进阶】
jvm·数据库·python
gmaajt3 小时前
React Native 单元测试中第三方依赖的正确 Mock 策略
jvm·数据库·python
a9511416423 小时前
宝塔面板数据库查询响应慢_利用慢查询日志进行优化
jvm·数据库·python
丶小鱼丶3 小时前
串行垃圾收集器
jvm
2401_831419443 小时前
如何用 http 模块创建一个基础的 Web 服务器处理请求
jvm·数据库·python
pele3 小时前
Redis如何防止AOF文件无限增大_触发BGREWRITEAOF命令进行日志重写
jvm·数据库·python