年轻代和老年代都有哪些垃圾回收器?

年轻代的垃圾收集器包含: Serial、ParNew、Parallell
老年代则包括Serial Old老年代版本、CMS、Parallel Old老年代版本和JDK11中的G1收集器。

  • Serial:单线程版本收集器,进行垃圾回收的时候会STW(Stop The World),也就是进行垃圾回收的时候其他的工作线程都必须暂停
  • ParNew:Serial的多线程版本,用于和CMS配合使用
  • Parallel Scavenge:可以并行收集的多线程垃圾收集器
  • Serial Old:Serial的老年代版本,也是单线程
  • Parallel Old:Parallel Scavenge的老年代版本
  • CMS(Concurrent Mark Sweep):CMS收集器是以获取最短停顿时间为目标的收集器,相对于其他的收集器STW的时间更短暂,可以并行收集是他的特点,同时他基于标记-清除算法,整个GC的过程分为4步。
    初始标记:标记GC ROOT能关联到的对象,需要STW
    并发标记:从GCRoots的直接关联对象开始遍历整个对象图的过程,不需要STW
    重新标记:为了修正并发标记期间,因用户程序继续运作而导致标记产生改变的标记,需要STW
    并发清除:清理删除掉标记阶段判断的已经死亡的对象,不需要STW
    从整个过程来看,并发标记和并发清除的耗时最长,但是不需要停止用户线程,而初始标记和重新标记的耗时较短,但是需要停止用户线程,总体而言,整个过程造成的停顿时间较短,大部分时候是可以和用户线程一起工作的。

G1(Garbage First):G1收集器是JDK9的默认垃圾收集器,而且不再区分年轻代和老年代进行回收。
G1的回收过程分为以下四个步骤:
初始标记:标记GC ROOT能关联到的对象,需要STW
并发标记:从GCRoots的直接关联对象开始遍历整个对象图的过程,扫描完成后还会重新处理并发标记过程中产生变动的对象
最终标记:短暂暂停用户线程,再处理一次,需要STW
筛选回收:更新Region的统计数据,对每个Region的回收价值和成本排序,根据用户设置的停顿时间制定回收计划。再把需要回收的Region中存活对象复制到空的Region,同时清理旧的Region。需要STW

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.YHL

谢谢您的肯定

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值