关于垃圾收集算法你需要知道的是!!!

 1. 标记-清除算法(Mark-Sweep)

工作原理:

  • 首先标记出所有需要回收的对象

  • 在标记完成后,统一回收掉所有被标记的对象

  • 也可以反过来操作:标记存活的对象,然后回收所有未被标记的对象

优点:

  • 实现简单直接

缺点:

  • 会产生内存空间碎片问题

  • 需要"Stop the World"(暂停所有用户线程),类似于"一边扫地一边有人扔垃圾"的情况

  • 只能尽可能减少暂停时间,无法完全避免

2. 标记-复制算法(Mark-Copy)

工作原理:

  • 将内存分为大小相等的A、B两个区

  • 新对象首先分配到A区

  • 当A区内存满时,将存活的对象复制到B区

  • 清除整个A区

  • 之后新对象分配到B区,当B区满时重复上述过程

优点:

  • 实现相对简单

  • 不会产生内存碎片问题

缺点:

  • 收集效率不高或对象存活率高时性能较差

  • 只有一半的内存空间是有效的(另一半始终为空闲状态)

  • 仅适用于对象存活率低的场景(即大多数对象都是短命的)

3. 标记-整理算法(Mark-Compact)

工作原理:

  • 标记阶段与标记-清除算法相同

  • 后续不是直接清理可回收对象,而是将所有存活对象向内存空间一端移动

  • 然后直接清理掉边界以外的内存

特点:

  • 会移动对象,改变对象的内存地址

  • 解决了内存碎片问题

  • 但对象移动会增加计算开销

总结对比

在实际的垃圾回收器实现中,往往会结合使用这些算法,针对不同代际(新生代/老年代)采用最适合的算法组合。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值