Что на самом деле делает ZGC SoftMaxHeapSize?

Я понимаю цель SoftMaxHeapSize, но я не могу найти, что он делает на самом деле. Надеюсь, кто-нибудь, знакомый с внутренним устройством JDK, сможет пролить свет.

В частности, при достижении мягкого лимита:

  • Это просто меняется ZCollectionInterval а также ZUncommitDelay? К каким ценностям?
  • Или это что-то еще?
  • Сколько дополнительных накладных расходов на ЦП я могу ожидать?

Наконец, будет ли приложение работать нормально, если я сделаю что-то вроде -XX:SoftMaxHeapSize=1M -Xmx=1T?

1 ответ

Начиная с JDK 16 , используется больше активной кучи, чем помещает приложение в постоянный цикл сборки мусора. Я бы не назвал это оптимальным, но поскольку ZGC работает одновременно, он не оказывает катастрофического воздействия на приложение. В моем тесте он потреблял 1 дополнительное ядро ​​процессора (но я предполагаю, что это будет зависеть от количества потоков GC).

Кроме того, кажется, что все эвристики GC (которые настраивают такие вещи, как частота запуска GC) сначала смотрят на SoftMaxHeapSize.

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