垃圾收集有哪些算法,各自的特点?

标记清除算法:

分为两个阶段:

  1. 标记垃圾对象
  2. 将被标记的对象清除,回收内存空间。

容易产生内存碎片,浪费内存。

在这里插入图片描述

复制算法

将内存分为两个相等的部分。每次只用其中一部分,收集完垃圾后,将剩下的对象整齐的放在另一个区域。解决了内存碎片的问题,但一次能用的内存只有原来的一半,如果存活的对象很少,则效率比较高。由于绝大部分对象的生命周期都很短,所以复制算法被用在新生代中。

在这里插入图片描述

标记压缩算法

由于老年代中的对象都是生命力比较强的对象,不容易消失。所以每次复制效率会比较低。先将垃圾对象标记标记起来,然后再将存活对象压缩到内存的一端。这样既不产生碎片,效率有比较高。
在这里插入图片描述

分代收集算法

因为有的对象寿命长,有的对象寿命短。应该将寿命长的对象放在一个区,寿命短的对象放在一个区。不同的区采用不同的垃圾收集算法。寿命短的区清理频次高一点,寿命长的区清理频次低一点。

分为老年代和新生代区。新生代区又被分为Eden区和两个Survivor区。新产生的对象放在新生代的Eden区,当Eden区满的时候,清理Eden区的垃圾,将存活对象放在Survivor一区。当Eden区又满的时候,清理Eden区和Survivor一区,并将存活对象放在Survivor二区。依次这样循环。当对象经过15次垃圾收集都没有被收集后,就放到老年区,中间放不下的对象,大对象也放在老年区。

转载:https://www.jianshu.com/p/4c88861e3b79

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值