云时代的 JVM 原理与实战
康杨
京东资深架构师
3111 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 39 讲
云时代的 JVM 原理与实战
15
15
1.0x
00:00/00:00
登录|注册

16|垃圾回收器(下):面向未来的ZGC、Shenandoah

你好,我是康杨。
今天我们继续来聊 GC 的话题,上一节课我们介绍了当前生产环境中 GC 的王者 G1,还记得它的特点吗?没错,就是垃圾优先、可预见性、并行、分区分代,我们也说过 G1 是一个承前启后的垃圾回收器,而它启的这个后就是 ZGC 和 Shenandoah,也就是我们今天的主角,它们代表着未来 GC 的主流。

ZGC 的由来

随着云计算和大数据的迅猛发展,现代应用程序对于扩展性和低延迟的需求越来越高。传统的垃圾收集器在处理大内存应用程序时经常面临长时间停顿的问题,这导致了应用程序的性能下降。
为了解决这个问题,Oracle 决定开发一种全新的垃圾收集器,旨在提供低停顿时间、高可伸缩性和适用于大内存应用程序的解决方案。于是在 2017 年,Oracle 推出了名为 ZGC 的垃圾收集器,首先作为 Oracle JDK 的一个实验性功能引入。在随后的几个版本中,Oracle 对 ZGC 进行了改进和优化,不断增加新功能,提升性能,并解决了一些问题。最终,ZGC 在 JDK 11 中正式成为 Oracle JDK 的一部分,摇身一变,成为了一种稳定的垃圾收集器,并提供商业支持。
与此同时,ZGC 也在 OpenJDK 中不断得到改进。Oracle 把 ZGC 的源代码提交给了 OpenJDK 社区,供社区成员参与测试、优化。自 JDK 11 起,OpenJDK 把 ZGC 作为它垃圾收集器的一部分,并在 OpenJDK 的发行版本中提供了稳定版本,供开源社区使用和改进。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

垃圾回收器ZGC和Shenandoah代表了未来GC的主流。ZGC是专为高并发和大内存应用场景设计的垃圾收集器,具备低延迟、并发工作和内存压缩等特点。ZGC采用并行方式进行垃圾收集,解决了处理大型数据集时可能产生的暂停和无法实时回收垃圾的问题。其颜色指针技术提高了垃圾回收的效率和降低了停顿时间。Shenandoah也致力于减少停顿时间的垃圾收集,但与ZGC在关键技术方面有所区别。ZGC的最佳实践包括分配合适的内存、调整并发线程、注意资源限制、启用垃圾收集日志和监控和调优。ZGC适用于大内存需求和对低停顿时间敏感的应用程序。总的来说,ZGC通过先进的技术和算法实现了高效的垃圾回收和内存管理,为大数据处理和高并发应用提供了重要支持。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《云时代的 JVM 原理与实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(5)

  • 最新
  • 精选
  • peter
    请教老师两个问题: Q1:“ZGC 利用了 64 位机器的一些位来存储垃圾收集信息” ,这个具体是指什么? Q2:每一个对象都有一个颜色指针吗?

    作者回复: A1:这句话的意思是,ZGC(Z Garbage Collector)在64位机器上进行垃圾收集时,会将一部分位(比如最高的几位)用于存储垃圾收集的元信息,如对象是否被标记等。这种技术被称为指针染色(Colored Pointers)。这样利用了空闲的指针位,可以节省内存空间,避免了额外的内存开销。 A2:在 ZGC 中,每个 Java 对象头都有一个指针,而这个指针就是所谓的颜色指针。根据对象的状态,颜色指针有三种颜色:白、灰、黑。白色表示对象尚未被 GC 标记过,灰色表示对象已经被 GC 标记过,但对象引用的其它对象还未被标记,黑色表示对象已被标记,并且对象引用的其它对象也已被标记。

    2023-09-26归属地:北京
    1
  • Geek_fd6bd3
    ZGC 和 Shenandoah 的内容深度讲的太浅了。。。
    2023-12-03归属地:上海
    1
  • Geek_f24e8e
    老师,有个疑惑,是不是三色标记和染色指针弄混了,染色指针是标记不同gc批次的,用来实现延迟更新引用指向的对象,分三个区域remapped和m0 m1
    2024-03-06归属地:广东
  • 长脖子树
    Zgc和g1真的是两个级别的,生产环境上g1突刺可能接近100ms,而zgc大于0.2ms都很少
    2023-10-12归属地:浙江
  • 浩仔是程序员
    老师你好,使用ZGC是不是意味着不能使用指针压缩了?
    2023-10-07归属地:广东
收起评论
显示
设置
留言
5
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部