JEP 490: ZGC: Remove the Non-Generational Mode
ZGC: удаление режима без поколений
| Ответственный | Axel Boldt-Christmas |
| Тип | Feature |
| Область | JDK |
| Статус | Closed / Delivered |
| Выпуск | 24 |
| Компонент | hotspot / gc |
| Обсуждение | hotspot dash gc dash dev at openjdk dot org |
| Трудоёмкость | XS |
| Длительность | XS |
| Связан с | JEP 439: Generational ZGC |
| JEP 474: ZGC: Generational Mode by Default | |
| Рецензенты | Stefan Karlsson, Vladimir Kozlov |
| Одобрен | Vladimir Kozlov |
| Создан | 2024/07/08 08:41 |
| Обновлён | 2025/02/14 20:13 |
| Задача | 8335850 |
Аннотация
Удалить режим без поколений из сборщика мусора Z Garbage Collector (ZGC) и оставить для ZGC режим по умолчанию Generational Mode (режим с поколениями).
Цель
- Сократить затраты на поддержку двух разных режимов.
Мотивация
Поддержка ZGC без поколений замедляет разработку новых возможностей. Как сказано в JEP 439: Generational ZGC (ZGC с поколениями):
Generational ZGC должен в большинстве сценариев оказаться лучшим решением, чем ZGC без поколений. Со временем мы должны получить возможность заменить второй первым, чтобы сократить долгосрочные затраты на поддержку.
Описание
Режим без поколений удаляется: параметр ZGenerational объявляется устаревшим (obsolete), а код ZGC без поколений и его тесты удаляются. В одном из будущих выпусков срок действия параметра истечёт. После этого HotSpot JVM перестанет его распознавать и откажется запускаться.
После этих изменений соответствующие параметры командной строки будут работать так:
-
-XX:+UseZGC- Используется Generational ZGC.
-
-XX:+UseZGC -XX:+ZGenerational- Используется Generational ZGC.
- Выводится предупреждение об устаревшем параметре.
-
-XX:+UseZGC -XX:-ZGenerational- Используется Generational ZGC.
- Выводится предупреждение об устаревшем параметре.
У нагрузок, которые переходят на Generational ZGC, может измениться вывод в журналы и данные, доступные через API обслуживания и управления.
Риски и допущения
Риски и допущения у этого JEP те же, что у JEP 439: Generational ZGC и JEP 474: ZGC: Generational Mode by Default.
Производительность Generational ZGC будет отличаться от производительности ZGC без поколений. Главный риск в том, что некоторые нагрузки по своей природе не делятся на поколения, поэтому их производительность может немного снизиться. Мы считаем, что таких нагрузок достаточно мало и они не оправдывают затрат на долгосрочную поддержку двух отдельных режимов ZGC.
Конкретные риски:
-
Пользователям может понадобиться изменить конфигурации, настроенные для ZGC без поколений.
-
Предупреждения об устаревшем параметре могут вызвать проблемы.
-
Нагрузкам, которые тесно связаны с внутренним устройством JVM, журналами GC и данными, доступными через интерфейсы управления, может потребоваться дополнительное внимание.