并行垃圾回收器——Java 一口闷
Billy Korando,2022 年 8 月 1 日
并行垃圾回收器 (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%,但可能会影响暂停时间。
其他阅读材料
编码愉快!