09、Java10 新特性 - 增强的垃圾收集

JEP 304 : 垃圾收集器接口

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

JEP 307 : G1 的并行 Full GC

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

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


$java -XX:ParallelGCThreads=4