垃圾回收算法

标记清除算法

顾名思义:算法分为标记和清除两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收被标记的对象。

不足之处:

1. 效率问题:标记和清除的效率都不高
2. 空间问题:清除后有大量不连续的内存碎片,分配大内存时会进行另一次GC

复制算法

将内存分为大笑相等的两块,每次使用其中一块。当这一块用完了,将还存活的对象复制到另一块上面,然后将这一块清理掉。

代价是内存缩小一半,代价太大。

IBM研究表明:新生代的对象98%是朝生夕死,所以不需要按照1:1来分配内存。

实际情况中,将Eden和Survivor From、Survivor To 按 照8:1:1分配。每次只使用Eden和其中一块Survivor,GC时将Eden和Survivor From存活的对象复制到Survivor To上,之后From变成To

注:一些情况下,Eden和Survivor From存活的对象大于Survivor To的空间,这时候会将To区域的所有对象移入年老代


标记整理算法

较多的复制操作效率低。老年代的对象可能出现所有对象都存活的极端情况,所以老年代不能使用复制算法。

标记整理与标记清除算法的不同:标记整理会将存活的对象都向一端移动,然后直接清理掉边界以外的内存。


分代收集算法

对上述算法的利用。

  1. 新生代对象存活时间短,所以采用复制算法:只需要对少量对象进行复制即可完成搜集(90%的空间利用率)。
  2. 老年代对象存活时间长,存活率高,没必要使用额外空间分配担保,所以使用:标记-清理或标记-整理算法进行回收。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值