Настраиваемые значения по умолчанию для сборщика мусора G1

В этом посте описываются значения по умолчанию и некоторые дополнительные сведения о параметрах командной строки.

    • Параметр и значение по умолчанию
    • Описание

    • -XX:+G1UseAdaptiveConcRefinement
      -XX:G1ConcRefinementGreenZone=<ergo>
      -XX:G1ConcRefinementYellowZone=<ergo>
      -XX:G1ConcRefinementRedZone=<ergo>
      -XX:G1ConcRefinementThreads=<ergo>
    • Конкурентное обновление запомненного набора (уточнение) использует эти параметры для управления рабочим распределением конкурентных потоков уточнения. G1 выбирает эргономические значения для этих опций, так что -XX:G1RSetUpdatingPauseTimePercent тратит время на паузу сборки мусора для обработки любой оставшейся работы, адаптивно корректируя их по мере необходимости. Изменяйте с осторожностью, потому что это может вызвать очень длинные паузы

    • -XX:+ReduceInitialCardMarks
    • Это объединяет конкурентную работу по обновлению (уточнению) запомненного набора для начальных распределений объектов.

    • -XX:+ParallelRefProcEnabled
      -XX:ReferencesPerThread=1000
    • -XX:ReferencesPerThread определяет степень распараллеливания: для каждого N ссылочных объектов один поток будет участвовать в подэтапах обработки ссылок, ограниченный -XX:ParallelGCThreads. Значение 0 указывает, что всегда будет использоваться максимальное количество потоков, как указано значением -XX:ParallelGCThreads.
      Это определяет, должна ли обработка экземпляров java.lang.Ref.* Выполняться параллельно несколькими потоками.

    • -XX:G1RSetUpdatingPauseTimePercent=10
    • Это определяет процент общего времени сборки мусора, которое G1 должен потратить на этапе обновления RS, обновляя все оставшиеся запомненные наборы. G1 контролирует количество конкурентных обновлений запомненного набора, используя этот параметр.

    • -XX:G1SummarizeRSetStatsPeriod=0
    • Это период в ряде GC, когда G1 генерирует сводные отчеты о запомненных наборах. Установите это в ноль, чтобы отключить. Генерация сводных отчетов с запомненным набором данных является дорогостоящей операцией, поэтому ее следует использовать только при необходимости и с достаточно высоким значением. Используйте gc+remset=trace, чтобы напечатать что-нибудь.

    • -XX:GCTimeRatio=12
    • Это делитель для целевого соотношения времени, которое должно быть потрачено на сборку мусора, в отличие от приложения. Фактическая формула для определения целевой доли времени, которое можно потратить на сборку мусора до увеличения кучи, равна 1 / (1 + GCTimeRatio). Это значение по умолчанию приводит к достижению цели с примерно 8% времени, затрачиваемого на сборку мусора.

    • -XX:G1PeriodicGCInterval=0
    • Интервал в мс, чтобы проверить, должен ли G1 запускать периодическую сборку мусора. Установите на ноль, чтобы отключить.

    • -XX:+G1PeriodicGCInvokesConcurrent
    • Если установлено, периодические сборки мусора инициируют конкурентную маркировку или продолжают существующий цикл сбора, в противном случае запускается полный сборщик мусора.

    • -XX:G1PeriodicGCSystemLoadThreshold=0.0
    • Порог для текущей загрузки системы, возвращаемый вызовом getloadavg() хостов, чтобы определить, следует ли запускать периодическую сборку мусора. Текущая загрузка системы выше этого значения предотвращает периодические сборки мусора. Нулевое значение указывает, что эта проверка порога отключена.

Примечание: <ergo> означает, что фактическое значение определяется эргономично в зависимости от среды.


Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки