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

引用计数法:

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

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

可达性分析:

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

相关推荐
沐浴露z9 小时前
【JVM】详解 Class类文件的结构
java·jvm·class
爬虫程序猿10 小时前
把“天猫”装进 JVM:Java 关键词商品爬虫从 0 到 1(含完整可运行代码)
java·jvm·爬虫
stillaliveQEJ12 小时前
【JVM】基础概念之为什么要使用JVM
jvm
维诺菌15 小时前
k8s java应用pod内存占用过高问题排查
java·jvm·云原生·容器·性能优化·kubernetes
007php00717 小时前
百度面试题解析:synchronized、volatile、JMM内存模型、JVM运行时区域及堆和方法区(三)
java·开发语言·jvm·缓存·面试·golang·php
智海观潮18 小时前
JVM垃圾回收器、内存分配与回收策略
java·大数据·jvm
小杰帅气2 天前
内存管理C++
jvm
YuanlongWang2 天前
C#基础——GC(垃圾回收)的工作流程与优化策略
java·jvm·c#
白露与泡影2 天前
BAT 大厂 java高频面试题汇总:JVM+Spring+ 分布式 +tomcat+MyBatis
java·jvm·spring
それども2 天前
忽略Lombok构建警告
java·开发语言·jvm