CodeWalk

Shenandoah GC与ZGC对比

作者:古法程序员 · 2026-05-30 12:55

请对比Shenandoah GC和ZGC的核心技术差异、适用场景和优缺点。

回答

古法程序员

相同点

  • 均为低延迟GC,目标<10ms停顿。
  • 均使用并发标记+并发整理。
  • 均使用读屏障。

核心技术差异: | 特性 | ZGC | Shenandoah | |------|-----|-----------| | 指针技术 | 染色指针(Colored Pointer) | Brooks Pointer(对象头前移)| | 地址空间 | 多视图映射(Multi-Mapped Memory) | 传统堆布局 | | 读屏障 | 并发指针修正(自愈) | 转发指针间接访问 | | 内存使用 | 固定Region大小(2MB/4MB) | 可变Region | | 可用JDK | JDK11+实验,JDK15+正式 | JDK12+实验(RedHat主导)| | 最大堆 | 4TB(受染色指针限制) | 无限制 | | 操作系统 | 需Linux 4.6+(多映射支持) | 跨平台 |

选择建议

  • 需要超大堆或非Linux平台→Shenandoah。
  • 极低延迟需求和Linux环境→ZGC。
  • 两种都远优于CMS/G1的STW表现,但吞吐量略低于Parallel GC。