Какой флаг JVM устанавливает порог служебной нагрузки GC, упомянутый в журнале G1Ergonomics?

Я использую сборщик мусора G1.

Вы можете включить журналы политики адаптивного размера с помощью

-XX:+PrintAdaptiveSizePolicy

Вот пример вывода в логах GC

1822.780: [G1Ergonomics (Определение размера кучи) попытка расширения кучи, причина: недавние издержки 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)

1 ответ

Решение

GCTimeRatio это тот, который вы ищете, он имеет другое значение по умолчанию, когда вы фактически указываете G1. В общем PringFlagsFinal должны быть добавлены к вашей фактической командной строке, потому что некоторые флаги могут влиять на значения по умолчанию других.

Что управляет эргономикой GC, описано в официальных документах, вы должны прочитать их, прежде чем приступать к настройке GC.

Другие вопросы по тегам