我正在使用 G1 垃圾收集器。
您可以启用自适应大小策略日志
-XX:+PrintAdaptiveSizePolicy
这是 GC 日志中的示例输出
1822.780: [G1Ergonomics (Heap Sizing) 尝试堆扩展,原因:最近 GC 开销高于 GC 后的阈值,最近 GC 开销:11.48 %,阈值:10.00 %,未提交:0 字节,计算的扩展量:0 字节(20.00 %) ]
哪个 JVM 标志管理阈值:其中提到的10.00 % ?
下面是一些似乎相关的标志,但我尝试为其中一些设置不同的值,并且日志消息没有改变。
user@host:/home/logs/cassandra$ java -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -version | egrep "Threshold|Percent|Ratio"
intx BackEdgeThreshold = 100000 {pd product}
intx BiasedLockingBulkRebiasThreshold = 20 {product}
intx BiasedLockingBulkRevokeThreshold = 40 {product}
intx BlockLayoutMinDiamondPercentage = 20 {C2 product}
uintx CMSIsTooFullPercentage = 98 {product}
double CMSLargeCoalSurplusPercent = 0.950000 {product}
double CMSLargeSplitSurplusPercent = 1.000000 {product}
uintx CMSPrecleanThreshold = 1000 {product}
uintx CMSScheduleRemarkEdenSizeThreshold = 2097152 {product}
uintx CMSScheduleRemarkSamplingRatio = 5 {product}
double CMSSmallCoalSurplusPercent = 1.050000 {product}
double CMSSmallSplitSurplusPercent = 1.100000 {product}
uintx CMSTriggerRatio = 80 {product}
uintx CMSWorkQueueDrainThreshold = 10 {product}
uintx CMS_SweepTimerThresholdMillis = 10 {product}
intx CompileThreshold = 10000 {pd product}
intx G1ConcRefinementThresholdStep = 0 {product}
uintx G1ConfidencePercent = 50 {product}
uintx G1HeapWastePercent = 5 {product}
intx G1RSetUpdatingPauseTimePercent = 10 {product}
uintx G1ReservePercent = 10 {product}
uintx G1SATBBufferEnqueueingThresholdPercent = 60 {product}
uintx GCLockerEdenExpansionPercent = 5 {product}
uintx GCTimeRatio = 99 {product}
uintx IncreaseFirstTierCompileThresholdAt = 50 {product}
uintx InitialSurvivorRatio = 8 {product}
uintx InitialTenuringThreshold = 7 {product}
uintx InitiatingHeapOccupancyPercent = 45 {product}
intx InterpreterProfilePercentage = 33 {product}
uintx LargePageHeapSizeThreshold = 134217728 {product}
uintx MarkSweepDeadRatio = 1 {product}
uintx MaxHeapFreeRatio = 100 {manageable}
uintx MaxMetaspaceFreeRatio = 70 {product}
uintx MaxTenuringThreshold = 15 {product}
uintx MinHeapFreeRatio = 0 {manageable}
intx MinInliningThreshold = 250 {product}
uintx MinMetaspaceFreeRatio = 40 {product}
uintx MinSurvivorRatio = 3 {product}
uintx NewRatio = 2 {product}
intx OnStackReplacePercentage = 140 {pd product}
uintx PretenureSizeThreshold = 0 {product}
intx ProfileMaturityPercentage = 20 {product}
uintx StringDeduplicationAgeThreshold = 3 {product}
uintx SurvivorRatio = 8 {product}
uintx TLABWasteTargetPercent = 1 {product}
uintx TargetSurvivorRatio = 50 {product}
uintx ThresholdTolerance = 10 {product}
intx Tier0ProfilingStartPercentage = 200 {product}
intx Tier2BackEdgeThreshold = 0 {product}
intx Tier2CompileThreshold = 0 {product}
intx Tier3BackEdgeThreshold = 60000 {product}
intx Tier3CompileThreshold = 2000 {product}
intx Tier3InvocationThreshold = 200 {product}
intx Tier3MinInvocationThreshold = 100 {product}
intx Tier4BackEdgeThreshold = 40000 {product}
intx Tier4CompileThreshold = 15000 {product}
intx Tier4InvocationThreshold = 5000 {product}
intx Tier4MinInvocationThreshold = 600 {product}
intx TypeProfileMajorReceiverPercent = 90 {C2 product}
java version "1.8.0_72"
Java(TM) SE Runtime Environment (build 1.8.0_72-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.72-b15, mixed mode)