G1 GC 是否支持 UseGCOverheadLimit?

lev*_*tov 7 java garbage-collection jvm jvm-hotspot g1gc

HotSpot JVM GC 调优指南UseGCOverheadLimit中,仅在有关 CMS 和并行 GC 的页面上提到了该选项。此外,在GC Ergonomics文档页面上,相关选项被提及GCTimeLimitGCHeapFreeLimit就像它们仅适用于并行 GC 一样:

如果花费过多时间收集少量堆,并行垃圾收集器 (UseParallelGC) 将引发内存不足异常。为了避免这种异常,您可以增加堆的大小。您还可以设置参数 -XX:GCTimeLimit=time-limit 和 -XX:GCHeapFreeLimit=space-limit [...]

是否支持这些选项-XX:+UseG1GC

apa*_*gin 5

GC 开销限制是AdaptiveSizePolicy的特性,它在 Parallel GC 和 CMS 中使用,但在 G1 中不使用。

您还可以仔细检查gc_overhead_limit_was_exceeded标志是否从未在 中设置G1CollectedHeap::mem_allocate

因此,-XX:+UseGCOverheadLimit在 G1 GC 中不执行任何操作。

  • 实际上有一个为 G1 创建的 RFE 来支持这一点。请参阅https://bugs.openjdk.java.net/browse/JDK-8212084 (4认同)