Z Сборщик мусора (ZGC) в Java VM

Z Сборщик мусора (ZGC, Z Garbage Collector) - это масштабируемый сборщик мусора с малой задержкой. ZGC выполняет всю дорогостоящую работу конкурентно, не останавливая выполнение потоков приложений более чем на 10 мс, что делает его подходящим для приложений, требующих низкой задержки и/или использующих очень большую кучу (мульти-терабайты).

Z Garbage Collector доступен в качестве экспериментальной функции и включен с параметрами командной строки -XX:+UnlockExperimentalVMOptions -XX:+UseZGC.

Установка размера кучи

Наиболее важным параметром настройки для ZGC является установка максимального размера кучи (-Xmx). Поскольку ZGC - это конкурентный коллектор, необходимо выбрать максимальный размер кучи, чтобы: 1) куча могла вместить живой набор вашего приложения, и 2) было достаточно места в куче, чтобы можно было обслуживать выделения, пока GC работает. Сколько необходимо запаса, очень сильно зависит от скорости распределения и реального размера приложения. В общем, чем больше памяти вы отдаете ZGC, тем лучше. Но в то же время тратить память нежелательно, поэтому все дело в поиске баланса между использованием памяти и частотой работы GC.

Установка количества конкурентных потоков GC

Второй вариант настройки, на который можно обратить внимание, - это установка количества конкурентных потоков GC (-XX:ConcGCThreads). У ZGC есть эвристика для автоматического выбора этого числа. Эта эвристика обычно работает хорошо, но в зависимости от характеристик приложения это может потребоваться скорректировать. Эта опция по существу определяет, сколько процессорного времени должно быть предоставлено GC. Дайте ему слишком много, и GC будет красть слишком много процессорного времени из приложения. Дайте ему слишком мало, и приложение может выделять мусор быстрее, чем GC сможет его собрать.


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


Комментарии

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

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

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

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