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

1、引用计数算法

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

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

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

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

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

2、可达性分析算法

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

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

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

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

相关推荐
二哈赛车手2 分钟前
新人笔记---项目中简易版的RAG检索后评测指标(@Recall ,Mrr..)实现
java·开发语言·笔记·spring·ai
做时间的朋友。3 分钟前
精准核酸检测
java·数据结构·算法
许彰午16 分钟前
CacheSQL(五):桥接篇
java·数据库·缓存·系统架构
冯诺依曼的锦鲤16 分钟前
从零实现高并发内存池:TCMalloc 核心架构拆解
c++·学习·算法·架构
Thomas_Lee_OR20 分钟前
多Agent路径规划 LaCAM for multi-agent path finding (MAPF)
算法·路径规划·仓储机器人·mapf
ATCH IERV27 分钟前
Java实战:Spring Boot application.yml配置文件详解
java·网络·spring boot
一切皆是因缘际会28 分钟前
可落地数字生命工程:从记忆厮杀到自我意识觉醒全链路,AGI内生智能硅基生命心智建模
人工智能·深度学习·算法·机器学习·ai·系统架构·agi
nlpming39 分钟前
opencode Agent 详解
算法
江南十四行43 分钟前
排序算法进阶:直接插入排序(简单排序)与希尔排序
数据结构·算法·排序算法
nlpming43 分钟前
opencode System Prompt 构建机制 & AGENTS.md注入机制
算法