Настройка сборщика мусора Garbage-First (G1)
В этом и последующих постах описывается, как адаптировать поведение сборщика мусора Garbage-First (G1), если оно не соответствует вашим требованиям.
Общие рекомендации для G1
Общая рекомендация состоит в том, чтобы использовать G1 с настройками по умолчанию, в конечном итоге назначив ему другое время паузы и установив максимальный размер кучи Java, используя при желании -Xmx.
Значения по умолчанию G1 были сбалансированы иначе, чем у других коллекторов. Целью G1 в конфигурации по умолчанию является не максимальная пропускная способность и не минимальная задержка, а обеспечение относительно небольших равномерных пауз при высокой пропускной способности. Однако механизмы G1 для постепенного восстановления пространства в куче и контроля времени паузы влекут за собой некоторые издержки как в потоках приложения, так и в эффективности восстановления пространства.
Если вы предпочитаете высокую пропускную способность, то уменьшите время паузы с помощью -XX:MaxGCPauseMillis или предоставьте большую кучу. Если задержка является основным требованием, измените цель времени паузы. Старайтесь не ограничивать размер молодого поколения определенными значениями, используя такие параметры, как -Xmn, -XX:NewRatio и другие, потому что размер молодого поколения является основным средством для G1, чтобы позволить ему соответствовать времени паузы. Установка размера молодого поколения на одно значение переопределяет и практически отключает контроль времени паузы.
Переход на G1 с других сборщиков
Как правило, при переходе на G1 с других сборщиков, в частности сборщика Concurrent Mark Sweep (CMS), начните с удаления всех параметров, влияющих на сборку мусора, и устанавливайте только время паузы и общий размер кучи, используя -Xmx и, необязательно, -Xms.
Многие параметры, которые полезны для других сборщиков, чтобы реагировать определенным образом, либо не влияют вообще, либо даже уменьшают пропускную способность и вероятность достижения цели времени паузы. Примером может служить установка размеров молодого поколения, которые полностью мешают G1 корректировать размер молодого поколения в соответствии с целями времени паузы.
Читайте также:
- Доступные сборщики мусора в Java
- Преимущественно конкурентные сборщики мусора в Java VM
- Сборщик мусора Garbage-First (G1) в Java VM
- Внутреннее устройство сборщика мусора Garbage-First в Java VM
- Эргономические настройки по умолчанию для сборщика мусора G1
Комментарии
Отправить комментарий