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

引用计数法:

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

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

可达性分析:

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

相关推荐
X56619 小时前
SQL注入防御技术方案_基于正则表达式的输入清洗
jvm·数据库·python
c++之路9 小时前
C++ 高频易错点
java·jvm·c++
wuminyu10 小时前
专家视角看Java多态性的底层基石vtable(虚函数表)构建过程解析
java·linux·c语言·jvm·c++
tjl521314_2111 小时前
02C++ 静态变量与链接性
java·jvm·c++
让梦想再启航11 小时前
JVM详解
jvm
m0_7485548120 小时前
golang如何实现用户订阅偏好管理_golang用户订阅偏好管理实现总结
jvm·数据库·python
lee_curry20 小时前
第四章 jvm中的垃圾回收器
java·jvm·垃圾收集器
阿正呀21 小时前
Redis怎样实现本地缓存的高效失效通知
jvm·数据库·python
2501_901200531 天前
mysql如何设置InnoDB引擎参数_优化innodb_buffer_pool
jvm·数据库·python
金銀銅鐵1 天前
[java] 编译之后的记录类(Record Classes)长什么样子(上)
java·jvm·后端