Что на самом деле делает ZGC SoftMaxHeapSize?
Я понимаю цель
SoftMaxHeapSize
, но я не могу найти, что он делает на самом деле. Надеюсь, кто-нибудь, знакомый с внутренним устройством JDK, сможет пролить свет.
В частности, при достижении мягкого лимита:
- Это просто меняется
ZCollectionInterval
а такжеZUncommitDelay
? К каким ценностям? - Или это что-то еще?
- Сколько дополнительных накладных расходов на ЦП я могу ожидать?
Наконец, будет ли приложение работать нормально, если я сделаю что-то вроде
-XX:SoftMaxHeapSize=1M -Xmx=1T
?
1 ответ
Начиная с JDK 16 , используется больше активной кучи, чем помещает приложение в постоянный цикл сборки мусора. Я бы не назвал это оптимальным, но поскольку ZGC работает одновременно, он не оказывает катастрофического воздействия на приложение. В моем тесте он потреблял 1 дополнительное ядро процессора (но я предполагаю, что это будет зависеть от количества потоков GC).
Кроме того, кажется, что все эвристики GC (которые настраивают такие вещи, как частота запуска GC) сначала смотрят на
SoftMaxHeapSize
.