Java 27 将 G1 设为所有环境的默认垃圾收集器:升级前如何测试小型容器
JDK 27 于 2026 年 9 月 15 日发布,JEP 523 取消了 G1 在受限环境回退到 Serial GC 的逻辑,使 G1 成为所有环境的默认垃圾收集器。此前当可用处理器为 1 或物理内存低于 1792 MB 时,JVM 会自动选择 Serial GC。该变化主要影响未显式指定收集器的小型容器,如边车容器、批处理与队列 worker、低流量内部服务、CI/开发容器以及设置分数 CPU 的 Pod。升级前可通过 GarbageCollectorMXBean 识别当前收集器:Serial GC 报告 Copy、MarkSweepCompact,G1 报告 G1 Young Generation 等。G1 的本地内存开销约 43 MB,Serial GC 约 1.7 MB;在 256 MB 容器中占比可达 16%,可能导致 OOM。建议用最小容器规格和代表性负载对比总停顿时间、p99 尾延迟及负载下的 RSS;若 G1 表现更差,可显式设置 -XX:+UseSerialGC。Java 27 非 LTS,但同一默认值将进入下个 LTS,提前评估风险更低。