2

我正在使用 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)
4

1 回答 1

2

GCTimeRatio是您正在寻找的那个,当您实际指定 G1 时,它具有不同的默认值。通常PringFlagsFinal应该附加到您的实际命令行,因为某些标志会影响其他标志的默认值。

官方文档中介绍了推动GC 人体工程学的因素,您应该在开始 GC 调整之前阅读它们。

于 2016-03-23T23:40:59.493 回答