为什么新生代只能采用复制算法?不能采用标记清除算法及标记整理算法

本文探讨了在新生代垃圾回收中,为何不采用标记清除和标记压缩算法,而选择复制算法。标记清除算法可能导致内碎片,效率在某些情况下不高;标记压缩虽然消除碎片,但需要移动对象,影响效率。复制算法通过牺牲空间来提高效率,适合新生代中大部分对象在初次GC时消亡的特性。

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

提示:本文仅针对分代垃圾收集中复制算法、标记压缩和标记清除算法的讨论

一、简述标记清除算法

1.1标记清除算法流程

(1)标记:采用三色标记法对全部对象进行标记
(2)清除:对每个GCRoot不可达对象进行删除

1.2标记清除优点

(1)因为在清除过程中不需要改变对象所在位置,因此可以做到GC线程和用户线程同时操作而不起冲突(CMS即利用这点达到最短STW)
(2)较为简单,不需要做整理操作,若存活对象较多的话,需要删除的对象比较少的情况下效率较高

1.3标记清除缺点

(1)在标记清除过程中,不能移动对象位置,因此可能导致内碎片频出。最终导致无可用空间进行分配。(因此使用标记清除的CMS算法使用Serial Old的标记压缩算法兜底)
(2)若当前存活对象较少,则仍单独针对某个对象进行清除不如整体清除效率高

二、简述标记压缩算法

2.1标记压缩算法流程

(1)标记:采用三色标记法对全部对象进行标记
(2)压缩:将GCRoot可达对象移动到空间一侧,将其余空间中对象删除(整体删除)。

2.2标记压缩优点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值