【JVM】如何判断对象是否可以被回收

引用计数法:

在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不可能再被使用的。

优点:实现简单,判定效率高;缺点:无法解决对象相互循环引用的问题,对象A中引用了对象B,对象B中引用对象A。

可达性分析:

通过一系列称为"GC Roots"的根对象作为起始节点集,从这些节点开始,根据引用关系向下搜索,搜索过程所走过的路径称为"引用链"(Reference Chain),如果某个对象到GC Roots间没有任何引用链相连,或者用图论的话来说就是从GC Roots到这个对象不可达时,则证明此对象是不可能再被使用的。

相关推荐
剑海风云5 小时前
JVM常用概念之即时常量
jvm·即时常量
爱编码的傅同学1 天前
C++从入门到入土(八)——多态的原理
java·jvm·c++
NMBG221 天前
[JAVASE] 反射
java·开发语言·jvm·后端·intellij-idea
剑海风云2 天前
JVM常用概念之锁省略
jvm·锁省略
信徒_2 天前
java 中判断对象是否可以被回收和 GCROOT
java·开发语言·jvm
王嘉俊9252 天前
初识JVM
java·jvm·字节码
lovebugs2 天前
JVM垃圾回收器全面解析:从核心概念到选型指南
jvm·后端·面试
what_20182 天前
jvm汇总
jvm
卡布奇诺-海晨2 天前
JVM之Arthas的jvm命令
jvm
哥谭居民00012 天前
mybatis注册一个自定义拦截器,拦截器用于自动填充字段
java·开发语言·jvm·mybatis