ZGC调优,亚毫秒级延迟GC,垃圾收集器

本文介绍了ZGC垃圾收集器,一个低延迟、高可扩展性的Java GC,其目标是亚毫秒级暂停时间且支持大内存。ZGC在Java 11至17版本中逐渐稳定,有望成为主流。文章涵盖了ZGC的起源、特点,如并发、基于Region等,并详细阐述了如何在不同系统上启用和调优ZGC,包括堆参数、并发GC线程数、大页支持和NUMA配置。最后简述了ZGC的垃圾回收流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java长期支持版本Java11发布时推出了ZGC, 之后的Java12 -16均有ZGC的一些更新。然而Java17的新特性已经敲定,确定没有关于ZGC的相关更新,也从另一方面说明了至Java17 ZGC已经比较稳定,可以作为比较稳定的GC垃圾回收器。相信未来ZGC必定会成为主流的Java垃圾回收期,那么盘一盘ZGC就是必然的了。

1 ZGC从何而来,有什么好处

1.1 ZGC 的命名

根据OpenJDK官方网站的说明ZGC其实并没有什么特殊意义,就是一个名字而已。起初只是为了致敬ZFS 文件系统,表示ZGC与ZFS一样都是革命性的,是一个跨时代的产品。更像是一种崇拜命名法。所以ZGC就是要做革命性的与以往的垃圾回收器性能上有很大提高的GC。

1.2ZGC的好处及特点

ZGC是一个低延迟的可扩展GC,它有以下的目标

  1. 亚毫秒级别的时间延迟 (就是不超过1毫秒。)

    下图是SPEC做出的测试对比,Java16 已经可以支持亚毫秒级别的延迟了

2. 暂停时间不会随着堆的大小,存活集及根集的大小的增加而增加
3. 支持8MB-16TB级别的堆大小

同时ZGC有如下标签:

  • 并发
  • 基于Region
  • 堆压缩
  • 彩色指针 (对象使用64的指针,有44位表示对象内存地址(如果是8TB , 4TB堆内存则会用到43,42位) ,其中有4位用于GC, 其余为备用 ),个别详情请看 http://hg.openjdk.java.net/jdk/jdk/rev/24f6b0e413a0

color-point

  • 负载屏障
  • NUMA支持 (每个CPU单独访问一块内存)

2 ZGC如何使用及调

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值