Java 12 为其垃圾收集算法引入了多项增强功能。
引入了一个实验性的低暂停时间垃圾收集器 Shenandoah 以减少 GC 暂停时间。它与运行 Java 线程并行工作。这有助于减少 GC 对堆大小的依赖性并使其保持一致。现在垃圾收集暂停时间对于 2 MB 和 2 GB 堆空间来说是相似的。
Shenandoah 预计将成为 Java 15 主要 JAVA 版本的一部分。
使用 Java 12,如果应用程序处于非活动状态,G1 将处理 Java 堆空间,并可能将内存释放给操作系统。这种抢占行为保存和释放内存。
在 Java 12 中,G1 的效率得到了提高。现在,如果 G1 混合集合超过定义的暂停限制,则它们将被中止。现在混合集合分为强制和可选。G1 收集器可以优先考虑要检查暂停时间目标的强制集。