JVM(HotSpot VM)七大垃圾收集器的特点汇总

3 篇文章 0 订阅

JVM(HotSpot VM)七大垃圾收集器的特点汇总

回收器名称算法分类作用区域是否多线程类型特点备注
Serial复制算法新生代单线程串行响应速度优先适合用于单CPU、内存较小的情况,算法简单,回收效率不高。Client默认垃圾回收器。
ParNew复制算法新生代多线程并行响应速度优先适用于多CPU,并行垃圾回收,回收效率较高。唯一和CMS搭配使用的新生代垃圾回收器。
Parallel Scavenge复制算法新生代多线程并行吞吐量优先更加关注吞吐量,适用于多CPU,并行垃圾回收,回收效率较高。
Serial Old标记-整理算法老年代单线程串行响应速度优先与Serial搭配使用,也是适合于单CPU的设备,回收效率不高。
Parallel Old标记-整理算法老年代多线程并行吞吐量优先与Parallel Scavenge配合使用,回收效率较高。
CMS标记-清除算法老年代多线程并发响应速度优先追求最短的暂停时间。与ParNew配合使用,默认还要搭配上Serial Old作为备选方案。特点是尽量压缩暂停时间,使用场景:互联网,或者交互较多的情况,用户体验较好。缺点:1会产生碎片,2必须在老年代内存占用率低于某一阈值时进行垃圾回收,如果内存占用率超过这一阈值,会导致CMS回收器失效,从而使用备选方案的Serial Old回收器进行垃圾回收,会产生较长的"stop the world"时间,有时会达到1秒,甚至几秒。
G1分代收集算法(复制算法、标记-清除算法、标记-整理算法的混合实现)新生代、老年代多线程并发、并行响应速度优先(垃圾优先)在保证响应速度的情况下,尽可能的达到高的吞吐量。可以设置每次的垃圾回收时间在某一特定时间段内完成,G1垃圾回收器在回收时尽可能的在用户设置的这个时间段内完成,但不能完全保证一定在这个时间内完成。设置垃圾回收时间默认是200ms,不建议用户将该值设置的过小,如果设置过小,可能导致每次垃圾回收时都没有进行完全的回收,回收整体比例不大,那么会造成堆中会有大量的垃圾没有被回收掉,导致内存泄漏,进而会导致内存溢出。G1垃圾回收器在每次进行垃圾回收时,先对每一个region区域计算垃圾回收率,优先回收垃圾较多的region区域,官方将其命名为Garbage First, 也有垃圾优先的含义。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值