- Является ли G1 сборщиком по умолчанию в Java 7, и если нет, то как мне активировать G1?
G1 не является сборщиком по умолчанию в Java 7. -XX:+UseG1GC
включит G1GC
- Какие дополнительные настройки g1 имеет в Java7?
Их много. Взгляните на эту статью oracle для получения полной информации.
G1 GC - это адаптивный сборщик мусора со значениями по умолчанию, которые позволяют ему работать эффективно без изменений.
По этой причине настраивайте критические параметры
-XX:MaxGCPauseMillis
-XX:G1HeapRegionSize
-XX:ParallelGCThreads
-XX:ConcGCThreads
и оставить все остальные параметры равными значению по умолчанию .
Вот список важных опций и их значения по умолчанию. Этот список применяется к последней версии Java HotSpot VM, сборка 24. Вы можете адаптировать и настроить параметры G1 GC в командной строке JVM.
Важные значения по умолчанию:
-XX:G1HeapRegionSize=n
Устанавливает размер области G1. Значение будет иметь степень двойки и может варьироваться от 1 до 32 МБ. Цель - создать около 2048 регионов на основе минимального размера кучи Java.
-XX:MaxGCPauseMillis=200
Устанавливает целевое значение для желаемого максимального времени паузы. Значение по умолчанию составляет 200 миллисекунд. Указанное значение не адаптируется к вашему размеру кучи.
-XX:G1NewSizePercent=5
Устанавливает процент кучи для использования в качестве минимума для размера молодого поколения. Значение по умолчанию составляет 5 процентов вашей кучи Java.
-XX:G1MaxNewSizePercent=60
Устанавливает процент от размера кучи для использования в качестве максимума для размера молодого поколения. Значение по умолчанию составляет 60 процентов вашей кучи Java.
-XX:ParallelGCThreads=n
Устанавливает значение рабочих потоков STW. Устанавливает значение n в число логических процессоров. Значение n совпадает с числом логических процессоров до значения 8.
Если существует более восьми логических процессоров, установите значение n равным приблизительно 5/8 логических процессоров. Это работает в большинстве случаев, за исключением больших систем SPARC, где значение n может составлять примерно 5/16 от логических процессоров.
-XX:ConcGCThreads=n
Устанавливает количество параллельных разметочных нитей. Устанавливает n равным приблизительно 1/4 от числа параллельных потоков сборки мусора (ParallelGCThreads).
-XX:InitiatingHeapOccupancyPercent=45
Устанавливает порог занятости кучи Java, который запускает цикл маркировки. Занятость по умолчанию составляет 45 процентов всей кучи Java.
-XX:G1MixedGCLiveThresholdPercent=65
Устанавливает порог занятости для старого региона, который будет включен в цикл смешанного сбора мусора. Заполняемость по умолчанию составляет 65 процентов
-XX:G1HeapWastePercent=10
Устанавливает процент кучи, которую вы готовы тратить. Виртуальная машина Java HotSpot не запускает цикл смешанного сбора мусора, когда процент извлечения меньше, чем процент отходов кучи
-XX:G1MixedGCCountTarget=8
Устанавливает целевое число смешанных сборок мусора после цикла маркировки для сбора старых областей с не более чем G1MixedGCLIveThresholdPercent живых данных. По умолчанию используется 8 смешанных сборок мусора
-XX:G1OldCSetRegionThresholdPercent=10
Устанавливает верхний предел на количество старых областей, которые будут собираться во время смешанного цикла сбора мусора. По умолчанию используется 10% кучи Java
-XX:G1ReservePercent=10
Устанавливает процентную долю резервной памяти, которая остается свободной, чтобы снизить риск переполнения пространства. По умолчанию это 10 процентов. При увеличении или уменьшении процентного соотношения обязательно измените общую кучу Java на ту же величину.
Вы перенастроили многие параметры G1GC, которые не требуются, если вы следуете вышеупомянутой странице документации. Пожалуйста, перепроверьте приведенные выше рекомендации, особенно для ParallelGCThreads и ConcGCThreads , которые должны основываться на ядрах вашего процессора. Удалите перенастройку ненужных параметров.
Рекомендации от оракула:
Когда вы оцениваете и настраиваете G1 GC, помните о следующих рекомендациях:
Размер молодого поколения : Избегайте явного задания размера молодого поколения с помощью параметра -Xmn
или любого другого параметра, например -XX:NewRatio
. Исправление размера молодого поколения отменяет целевую цель паузы времени .
Цели паузы: При оценке или настройке любой сборки мусора всегда существует компромисс между задержкой и пропускной способностью. G1 GC - это инкрементный сборщик мусора с равномерными паузами, но также с большими накладными расходами в потоках приложения. Цель пропускной способности для G1 GC - 90% времени приложения и 10% времени сбора мусора .
- Были ли какие-либо изменения в других сборщиках, таких как cms или параллельный сборщик в Java 7?
В Java 7 есть некоторые изменения. Взгляните на эту статью
- Где найти хорошую документацию по сборке мусора в Java 7?
См. Страницу документации оракула о gc и связанных с ним вопросах SE:
Сборка мусора Java G1 в производстве