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».