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

引用计数法:

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

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

可达性分析:

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

相关推荐
没有bug.的程序员1 小时前
微服务的本质:不是拆服务,而是拆复杂度
java·jvm·spring·微服务·云原生·容器·架构
未若君雅裁11 小时前
JVM面试篇总结
java·jvm·面试
kk哥889911 小时前
C++ 对象 核心介绍
java·jvm·c++
Jaising66614 小时前
PF4J 日志类冲突与 JVM 类加载机制
jvm·后端
2301_7737303116 小时前
系统编程—线程
jvm
葛二蛋17 小时前
深入ClassLoader:从双亲委派到SPI
jvm
MicoZone17 小时前
jvm(更新中)
jvm
东华万里19 小时前
Release 版本禁用 assert:NDEBUG 的底层逻辑与效率优化
java·jvm·算法
听风吟丶1 天前
Java NIO 深度解析:从核心组件到高并发实战
java·开发语言·jvm
a努力。1 天前
小红书Java面试被问:ThreadLocal 内存泄漏问题及解决方案
java·jvm·后端·算法·面试·架构