java 21垃圾收集器演进聚焦低延迟、可预测性与大堆适配,核心是g1代际化重构(generational g1)与zgc亚毫秒停顿落地,g1仍为默认,zgc面向高要求场景。

Java 21 中垃圾收集器的演进不是简单“升级”,而是围绕低延迟、可预测性、大堆适配三个核心目标做的实质性突破。重点不在新增收集器,而在 G1 和 ZGC 的深度优化,以及代际模型的回归与强化。
G1 的代际化重构:Generational G1
这是 JDK 21 对 G1 最关键的改动——正式引入代际 G1(Generational G1)。此前 G1 虽逻辑上分代,但 Region 分配和回收策略未强制区分新生代/老年代语义;JDK 21 开始,G1 显式维护年轻代 Region 和老年代 Region 的边界,并据此优化行为:
- 年轻代回收更聚焦 Eden + Survivor 区,减少跨代扫描开销
- 混合回收(Mixed GC)中老年代 Region 的选择更精准,优先清理含大量垃圾且引用关系简单的区域
- 配合改进的并行全年轻代回收,Minor GC 停顿进一步压缩,尤其在高分配速率场景下更稳定
ZGC 的亚毫秒级停顿落地
ZGC 在 JDK 21 中已完全达成其原始设计目标,并超越预期:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 最大停顿时间稳定控制在1 毫秒以内(sub-millisecond),且与堆大小(支持 8MB–16TB)、存活对象数量、根集规模均无关
- 通过 JEP 376(Concurrent Thread-Stack Processing),实现线程栈的并发扫描,消除过去 STW 中最不可控的一环
- 着色指针(Colored Pointers)与内存重映射(Remap)全程并发,连对象移动都无需暂停应用线程
并发标记与混合回收的智能调度
不只是“更快”,而是“更懂何时出手”:
- G1 的并发标记阶段采用更细粒度的锁和动态线程负载均衡,避免 CPU 热点,提升多核利用率
- 混合回收触发机制引入堆增长趋势预测模型,不再仅依赖当前使用率阈值,减少误触发或延迟触发
- Region 回收优先级计算融合了垃圾密度、对象年龄、跨代引用强度等多维因子,回收效率更贴近真实业务压力分布
默认策略更务实:G1 仍是主力,ZGC 面向特定场景
JDK 21 仍以 G1 为默认 GC,但对 ZGC 的生产就绪度做了彻底确认:
- G1 适合绝大多数服务端应用(4GB–64GB 堆、延迟要求
- ZGC 不再是“实验性选项”,而是明确推荐用于延迟敏感型系统**(如高频交易、实时风控、游戏服务器)和超大堆场景**(≥64GB)
- CMS 已彻底移除,Parallel GC 仅保留在吞吐量优先且无延迟约束的批处理任务中
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










