openjdk.ruOpenJDK на русском

JEP 379: Shenandoah: A Low-Pause-Time Garbage Collector (Production)

Shenandoah: сборщик мусора с короткими паузами (штатная версия)

ОтветственныйAleksey Shipilev
ТипFeature
ОбластьImplementation
СтатусClosed / Delivered
Выпуск15
Компонентhotspot / gc
Обсуждениеhotspot dash gc dash dev at openjdk dot java dot net
ТрудоёмкостьXS
ДлительностьXS
РецензентыAndrew Hughes, Roman Kennke
ОдобренMark Reinhold
Создан2020/03/23 16:53
Обновлён2021/11/10 08:51
Задача8241457

Аннотация

Перевести сборщик мусора Shenandoah из статуса Experimental (экспериментальная функция) в штатную возможность.

Что не является целью

  • Этот JEP не предлагает менять сборщик мусора по умолчанию, которым остаётся G1.

  • Этот JEP не предлагает менять процесс разработки Shenandoah, который по-прежнему будет поддерживать как последний JDK, так и популярные выпуски JDK с LTS/STS.

Мотивация

Shenandoah был интегрирован в JDK 12 в рамках JEP 189. Он был помечен как Experimental, чтобы соответствовать статусу других новых сборщиков мусора, в частности Epsilon GC и ZGC. Теперь Shenandoah готов избавиться от статуса Experimental в основной линии JDK, как недавно было предложено для ZGC в JEP 377.

Описание

В JDK 12 и более поздних версиях Shenandoah включается опциями -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC. Перевод Shenandoah в штатную возможность означает, что -XX:+UnlockExperimentalVMOptions больше не понадобится. Ряд связанных с Shenandoah опций перейдёт из класса «experimental» в класс «product» при условии рецензирования. Значения опций по умолчанию не изменятся. Таким образом, это изменение сводится скорее к косметической смене классов флагов.

На момент интеграции в JDK 12 Shenandoah уже поставлялся как поддерживаемый сборщик мусора в производных выпусках Red Hat 8u и 11u и использовался пользователями RHEL и производных от RHEL систем. Поэтому Shenandoah 8u и Shenandoah 11u уже не имеют статуса Experimental, и это изменение их не затрагивает. Поскольку лишь немногие пользователи запускают что-то кроме 8u и 11u, мы ожидаем, что фактическое влияние этого изменения будет ничтожным.

Тестирование

Изменений в тестах ожидается мало или не ожидается вовсе. В основном это связано с тем, что код Shenandoah синхронизирован между 8u, 11u, 14u и dev, а тесты уже допускают, что Shenandoah может быть как «experimental», так и «product».