- Является ли G1 сборщиком по умолчанию в Java 7, и если нет, как мне активировать G1?
G1 не является сборщиком по умолчанию в Java 7. -XX:+UseG1GC
включит G1GC.
- Какие дополнительные настройки есть у g1 в Java7?
Много. Взгляните на эту статью оракула для получения полной информации.
G1 GC - это адаптивный сборщик мусора со значениями по умолчанию, которые позволяют ему эффективно работать без изменений.
По этой причине настройте критические параметры
-XX:MaxGCPauseMillis
-XX:G1HeapRegionSize
-XX:ParallelGCThreads
-XX:ConcGCThreads
и оставьте все остальные параметры по умолчанию .
Вот список важных параметров и их значений по умолчанию. Этот список относится к последней виртуальной машине Java HotSpot, сборка 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?
Обратитесь к странице документации oracle о gc и соответствующем вопросе SE:
Сборка мусора Java G1 в производстве