Shenandoah 和 ZGC 收集器总结

本文对比分析了Shenandoah和ZGC两款并发垃圾收集器。Shenandoah以其并发回收和低内存开销为特点,不依赖分代,采用转发指针技术。而ZGC作为JDK 11的实验特性,追求极低延迟,利用染色指针和并发整理算法,其停顿时间与堆大小无关,且不使用写屏障。这两款收集器都致力于在不影响吞吐量的情况下提供出色的性能。
摘要由CSDN通过智能技术生成

阅读前提:了解G1 等收集器。

Shenandoah

前言: Shenandoah 并不是Oracle 官方的收集器,所以 OracleJDK 甚至明确拒绝使用这个高效的垃圾收集器,商用的话可以使用OpenJDK。

该收集器与 G1 的不同有:

  • G1的回收阶段是可以多线程并行的,但是不能与用户线程并行,但是Shenandoah 回收阶段是可以与用户线程并发的,使用了转发指针等技术。

  • Shenandoah 默认不使用分代收集,然而G1 是分新生代和老年代这些的,所以没有专门的新生代和老年代的 Region 。

  • G1 消耗大量的内存去维护记忆集, Shenandoah 改用名为“连接矩阵”的全局数据结构来记录跨Region的引用关系降低了处理跨待指针是的记忆集维护消耗。
    在这里插入图片描述

  • 用户线程和收集器线程对转发指针的访问

  • 使用CAS保证两者并发时能够正确访问

ZGC

ZGC 收集器是一款JDK 11 中新加入的具有实验性质的低延迟垃圾收集器,与Shenandoah 的目标相同,向往尽可能对吞吐量影响不大的前提下,实现在任意任意堆内存可以把垃圾收集停顿限制在十毫秒之内的低延迟。

  • 不设置分代,使用读屏障、染色指针和内存多重映射实现并发整理算法。
  • 染色指针就是在指向对象的指针上标记对象的一些信息,如可以在指针(即地址࿰
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值