У меня есть микросервис с очень высокой пропускной способностью, работающий в AWS в ECS с использованием OpenJDK Java17. Я тестирую переход ZGC с G1GC и замечаю, что ZGC не будет использовать всю выделенную кучу (10 г), а только 20% ее (2 г). Из-за этого процессор загружен на 100%, и, просматривая журналы gc, я вижу много остановок распределения. С G1GC с аналогичными опциями он будет использовать 8g и резко увеличиваться до 10g при большой нагрузке, но не выйдет из строя и восстановится. ZGC в конечном итоге выйдет из строя и закроется.
Вот мои варианты:
Код: Выделить всё
-Xms10g
-Xmx10g
-XX:+UseStringDeduplication
-XX:MaxRAMPercentage=80.0
-XX:+UseZGC
-XX:ParallelGCThreads=32
-XX:ConcGCThreads=16
Если я запустил java -XX:+PrintFlagsFinal, я вижу, что MaxRAMPercentage проигнорировал мои 80%, которые я установил, и использовал значение по умолчанию, и я не смог его изменить.< /p>
Код: Выделить всё
double MaxRAMPercentage = 25.000000 {product} {default}
Я не могу заставить его использовать более 2G. Заранее спасибо.
Подробнее здесь:
https://stackoverflow.com/questions/787 ... ocated-ram