【JVM】判断对象能否回收的两种方法:引用计数算法,可达性分析算法

1、引用计数算法

给对象添加一个引用计数器,当该对象被其它对象引用时计数加一,引用失效时计数减一,计数为0时,可以回收。

特点:占用了一些额外的内存空间来进行计数,原理简单,判定效率高

引用计数法简单易实现,但无法解决循环引用的问题

(这种引用情况下,A和B的计数器始终大于等于1。)

应用:引用计数法适用于对象生命周期较短、没有循环引用的场景,

2、可达性分析算法

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

可以通过引用链到达"根"的对象存活,不可到达的对象可以回收。(这个"根" 名为GC Roots)

特点:能够正确处理循环引用,但实现相对复杂,需要递归遍历对象图。

应用:可达性分析适用于长生命周期、存在循环引用的场景,

相关推荐
智者知已应修善业4 分钟前
【51单片机初始化D5-D8亮,每按键按下D1到D4全亮,再按下恢复,如此循环】2024-3-26
c++·经验分享·笔记·算法·51单片机
摇滚侠15 分钟前
SpringMVC 入门到实战 简介和入门案例 01-13
java·后端·spring·intellij-idea
未若君雅裁15 分钟前
JVM 垃圾回收器全景与G1深度解析
java·开发语言·jvm
霸道流氓气质15 分钟前
Java 大数据量异步处理方案:线程池 vs 消息队列
java·开发语言
devilnumber15 分钟前
想真正吃透 + 灵活运用 Java 代理模式
java·开发语言·代理模式
蝎子莱莱爱打怪16 分钟前
自用推荐|XTerminal:我心中 SSH 客户端的终极形态
java·后端·程序员
AIGS00120 分钟前
向量空间JBoltAI:重塑工业智能的四大支柱
java·人工智能·ai大模型应用
刘科领23 分钟前
修改jdk 第一步: 仓库以及构建(jdk17)
java·开发语言
C+-C资深大佬29 分钟前
C++ 中的 constexpr与 const区
java·开发语言·c++
8Qi830 分钟前
LeetCode 4:寻找两个正序数组的中位数 —— 二分查找法
java·算法·leetcode·职场和发展·二分查找