垃圾收集器

        不论是基于分代理论还是基于Region的内存布局的垃圾回收机,都是想要在内存占有、吞吐量、低延迟三个方面获得提升。

        基于分代理论设计的垃圾回收器以对象的存活时间为依据(CMS),将堆内存分为新生代和老年代。因为处于新生代的对象一般存活时间短,每次能够进行回收获得的收益较大(young gc)。而处于老年代的对象生命周期较长,进行gc不能都保证一定的收益。young gc触发的比较频繁,能够以较低的延迟获得较大的内存收益。同时标记复制更适合年轻代,频繁的分配回收不会产生内存碎片。标记清理和标记整理适用于老年代,因为老年代的对象内存占用较大,采用标记复制无法提供足够的空闲内存。

        基于区域的内存布局设计的垃圾回收器(g1),虽然也体现了年轻代和老年代的概念,但没有固定分代占用的内存大小。这类回收器不必每次对整个新生代或老年代进行回收,而可以对局部的Region进行收集。依据回收价值(回收的内存大小和付出的时间)对Region进行排序,优先对价值高的区域进行收集,从而建立一个可预测的停顿模型。

        

        由于硬件资源的提升,程序的内存空间没那么紧缺,用户更多关注收集动作的延迟。一次回收可以不用清理掉全部的垃圾,而是要尽可能的满足较低延迟,同时保证内存回收的速度大于内存分配的速度。对于CMS,G1收集器,在最后一步都要对未标记的对象进行清理。CMS会因为最终的内存整理而触发STW,G1会因为存活对象移动(内存整理)而停止用户线程。那么往后的几款收集器都是从这个方向发展,实现内存整理的同时用户线程也能正常运行,从而获得较低的延迟。

(一时的感想,想来还是记录下来,方便后续回顾反思)

        

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值