垃圾收集 原理

本文介绍了两种基本的垃圾回收算法:标记清除(Mark-Sweep)和三色法。标记清除算法分为标记和清除两个阶段;而三色法则通过将对象划分为引用和未引用两类来进行垃圾回收。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

看了两种基本方法: 
1 mark sweep 
就是收集的时候 
第一步 把用到的对象标记出来 
第二部 把$1中没有标记的对象收集,标记了的对象的标记清空 。 
2 三色法 
感觉只是把引用的对象和没有引用的对象分开。 
其实思路很简单: 
所有对象分为引用的和没有引用的。分别用黑色和白色的区域来放。 
然后把白色的区域里面的对象都释放了就可以了。 

1开始的时候先假设所有的对象都是要释放的(都放在白色区域里面) 
2 但是我们知道一个事实:顶级对象肯定是不能释放的!于是把顶级对象挑出来放到一个灰色区域。以后的游戏都是在灰色的区域里进行。 
3 对灰色区域里面的每个对象做这样的事情:把它的直接引用的对象放到灰色区域,然后把 
这个对象自己放到黑色区域里。重复这个事情直到最后灰色区域空了。 
4 现在只有黑色和白色区域有对象了。白色区域里面的对象就是没有被其它对象引用的,就可以安全地释放了。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值