并行垃圾回收器——Java 一口闷

并行垃圾回收器 (GC) 之所以得名,是因为它可以利用多个线程来处理 GC 任务,它提供了 OpenJDK 中可用的 GC 的最高吞吐量。我们将在本文中了解并行 GC。

使用并行 GC

可以使用 VM 参数 -XX:+UseParallel GC 启用并行 GC。如上所述,并行 GC 提供了 OpenJDK 中可用的 GC 的最高吞吐量;串行 GC、G1 GC 和 Z GC,但这以暂停时间和内存占用为代价。因此,在决定使用并行 GC 时请考虑这些影响。

调整并行 GC

有很多选项可以调整并行 GC;以下是一些需要考虑的关键选项。

  • MaxPauseTimeMillis:这会向 GC 提供提示,即暂停时间应小于提供的时间量。此标志未设置默认值。

  • GCTimeRatio:这会设置执行 GC 工作和应用程序工作之间花费的时间比率。默认值设置为 1 到 99。

  • Parallel GCThreads:这会设置可用于执行 GC 工作的线程数。默认值基于从可用系统资源确定的 HotSpot 人体工程学。请参阅以下链接。

  • +UseStringDeduplication:在 JDK 18 中,字符串去重从 G1 GC 移植到了并行 GC。启用字符串去重可以将内存占用减少约 10%,但可能会影响暂停时间。

其他阅读材料

编码愉快!