Java10 - 增强的垃圾收集

JEP 304 - 垃圾收集器接口

在 Java10 之前,GC(垃圾收集器)实现组件分散在代码库中,不易替换。 在 Java10 中,引入了 Garbage-Collector 接口,以便可以插入替代的 GC 实现。它还有助于将代码库与不同的垃圾回收实现隔离开来。 此功能是 JEP 304 的一部分。


JEP 307 - G1 的并行 Full GC

Java 9 引入了 G1(垃圾优先)垃圾收集器。 G1 避免了完全垃圾收集,但在并发线程寻找收集并且内存恢复速度不够快的情况下,用户体验会受到影响。 在 Java10 中,现在 G1 将使用后备完整垃圾收集。

通过此更改,G1 通过并行使用 Full GC 改善了最坏情况下的延迟。 目前G1采用单线程的mark-sweep-compact算法。 使用 JEP 307,并行线程将启动 mark-sweep-compact 算法。 可以使用以下选项控制线程数。

$java -XX:ParallelGCThreads=4