Java面试题更新 2026-08-05

请说明你对 Java 的 ZGC(Z Garbage Collector)的了解,包括其设计目标、核心机制、关键特征以及适用场景。

技术原理方案权衡JavaJVM

考察说明

考查候选人对现代 JVM 垃圾收集器 ZGC 的深入理解,包括其设计目标、核心机制与适用场景。

回答思路

  1. 【回答框架 1】ZGC 是 Oracle 在 JDK 11 中引入的实验性垃圾收集器,目标是在保证低延迟(停顿时间不超过 10 毫秒)的同时支持 TB 级堆内存,并保持吞吐量不显著下降。
  2. 【回答框架 2】ZGC 的核心机制基于染色指针(Colored Pointers)和读屏障(Load Barrier)。染色指针在指针的高位存储元数据,用于标记对象状态,从而在并发阶段完成大部分标记和整理工作。读屏障在应用线程访问对象时检查指针状态,若对象被移动或需要标记则进行修正,确保并发转移的正确性。
  3. 【回答框架 3】ZGC 的垃圾回收过程主要包括并发标记、并发转移和并发重映射等阶段,这些阶段与应用线程并发执行,仅在少量阶段(如初始标记、最终标记)有短暂的 STW 停顿,因此实现了极低的停顿时间。
  4. 【回答框架 4】ZGC 的适用场景包括需要低延迟的大型服务、内存占用较大的应用(如微服务、云原生环境),尤其适合对响应时间敏感的系统。但 ZGC 在 JDK 11 中为实验性,在 JDK 15 后转为正式特性,且其吞吐量可能略低于 G1,需要根据具体负载评估。
  5. 【关键点 1】ZGC 目标:低停顿(<10ms)且堆大小可达 TB 级。
  6. 【关键点 2】核心机制:染色指针 + 读屏障,实现并发标记、转移和重映射。
  7. 【关键点 3】ZGC 在 JDK 11 引入,JDK 15 转正。
  8. 【关键点 4】适用场景:低延迟敏感的 Java 应用。
  9. 【关键点 5】权衡:吞吐量可能略低于 G1,需压测验证。
  10. 【易错点 1】错误地认为 ZGC 完全没有 STW 停顿,实际仍有极短暂的暂停。
  11. 【易错点 2】忽略版本差异,JDK 11 中 ZGC 只能支持 Linux/x64,且默认未开启。
  12. 【易错点 3】盲目使用 ZGC 而不进行压测,导致吞吐量下降影响整体性能。