1. JDK 25/26 下 G1/ZGC/Shenandoah 的选型依据(暂停目标、堆规模、吞吐)
JDK 25/26 下 G1/ZGC/Shenandoah 的选型依据是什么(暂停目标、堆规模、吞吐)?
- G1 的适用场景
- ZGC 的适用场景
- Shenandoah 的适用场景
选型依据:1)G1——默认 GC,适合中小堆(几 GB 到几十 GB)、对暂停有一定容忍的通用场景,吞吐较高,暂停目标数百 ms;2)ZGC——分代 ZGC(JDK 21+)适合超大堆(几十 GB 到 TB)、要求极低暂停(毫秒级)的场景,暂停目标低但吞吐略低于 G1(并发开销);3)Shenandoah——类似 ZGC,低暂停,适合对暂停敏感的场景,分代 Shenandoah(JDK 25/26)提升了吞吐。权衡:暂停目标(G1 数百 ms vs ZGC/Shenandoah 毫秒级)、堆规模(大堆用 ZGC/Shenandoah)、吞吐(G1 吞吐较高,ZGC/Shenandoah 并发开销大)。JDK 25/26 中分代 ZGC 与分代 Shenandoah 的默认化(大堆)让低暂停 GC 更易用。
GC 选型是"暂停、吞吐、堆规模"的三角权衡。G1 通用优先,ZGC/Shenandoah 面向低延迟与大堆,分代化降低了并发开销。