-XX: + UseParallel * Старый * GC должен ускорить полный GC на многоядерном компьютере.
Вы также можете профилировать с другими значениями NewRatio.Ваши кэшированные объекты будут жить в постоянном поколении, поэтому профилируйте его с -XX: NewRatio = 7, а затем снова с более высокими и более низкими значениями.
Возможно, вы не сможете точно воспроизвести реалистичное использование во время профилирования, поэтомуубедитесь, что вы отслеживаете сборщик мусора, когда он используется в реальной жизни, а затем вы можете внести незначительные изменения (например, в пространство для выживших и т. д.) и посмотреть, какой эффект они имеют.Я не уверен, правда ли это.
Редактировать: Пожалуйста, дайте нам знать, на какой ОС / аппаратной платформе вы развернуты.
Полные коллекции каждые 30 минут указывают на то, что старое поколение достаточно полно.Высокое значение для newRatio даст ему больше места за счет молодого поколения.Можете ли вы дать JVM более 4 г или вы ограничены этим?
Было бы также полезно узнать, каковы ваши цели / не функциональные требования.Вы хотите избежать этих 6/7-секундных пауз из-за риска более низкой пропускной способности или эти паузы являются приемлемым компромиссом для максимально возможной пропускной способности?
Если вы хотите минимизировать паузы, попробуйте сборщик CMS, удалив оба
-XX:+UseParallelGC -XX:+UseParallelOldGC
и добавление
-XX:+UseConcMarkSweepGC -XX:+UseParNewGC
профиля с этим с различными значениями NewRatio и посмотрите, как вы попадаете.
Недостатком сборщика CMS является то, что в отличие от параллельного старого и последовательного сборщиков он не уплотняет старое поколение.Если старое поколение становится слишком фрагментированным, а второстепенная коллекция нуждается в одновременном представлении большого количества объектов старому поколению, может быть вызвана полная последовательная коллекция, что может означать длительную паузу.(Я видел это однажды в Prod, но с IBM JVM, которая вышла из памяти вместо вызова компактной коллекции!)
Это может не быть проблемой для вас - это зависит от характера приложения- но вы можете застраховаться от этого, перезапуская каждую ночь или неделю.