JEP 173: Retire Some Rarely-Used GC Combinations
Вывод из эксплуатации некоторых редко используемых комбинаций сборщиков мусора
| Ответственный | Bengt Rutisson |
| Тип | Feature |
| Область | JDK |
| Статус | Closed / Delivered |
| Выпуск | 8 |
| Компонент | hotspot / gc |
| Обсуждение | hotspot dash gc dash dev at openjdk dot java dot net |
| Трудоёмкость | XS |
| Длительность | XS |
| Рецензенты | Jesper Wilhelmsson, John Coomes, Jon Masamitsu |
| Одобрен | Mikael Vidstedt |
| Создан | 2012/11/26 20:00 |
| Обновлён | 2018/06/19 21:50 |
| Задача | 8046163 |
Аннотация
Удалить три редко используемые комбинации сборщиков мусора, чтобы снизить текущие затраты на разработку, сопровождение и тестирование.
Цели
Сейчас есть три комбинации сборщиков мусора, которые используются слишком редко, чтобы оправдать их поддержку в будущем:
- DefNew + CMS
- ParNew + SerialOld
- Incremental CMS
Эти комбинации усложняют кодовую базу сборщиков мусора и отнимают ценные ресурсы тестирования, но почти ничего не дают пользователям. Чтобы упростить кодовую базу сборщиков мусора и улучшить тестирование и сопровождаемость, мы предлагаем удалить эти комбинации.
Мотивация
Сохранение всех существующих комбинаций сборщиков мусора обходится дорого. Ресурсов на тестирование их всех не хватает. Из-за сложности кодовой базы сборщиков мусора новые возможности дольше реализуются и тестируются. Первый шаг к более простой, стабильной и быстрой кодовой базе — удалить некоторые из редко используемых комбинаций.
Описание
Комбинации DefNew + CMS и ParNew + SerialOld, а также режим Incremental Mode сборщика CMS получат статус Deprecated (устаревший): при их использовании будет выводиться предупреждение. Это следует понимать так, что эти комбинации сборщиков мусора будут удалены в одном из ближайших крупных выпусков.
Изменения затронут следующие комбинации флагов командной строки:
Флаги Конфигурация сборщика мусора -XX:-UseParNewGC
-XX:+UseConcMarkSweepGCDefNew + CMS -XX:+UseParNewGCParNew + SerialOld -XincgcParNew + iCMS -XX:+CMSIncrementalMode
-XX:+UseConcMarkSweepGCParNew + iCMS -XX:+CMSIncrementalMode
-XX:+UseConcMarkSweepGC
-XX:-UseParNewGCDefNew + iCMS
Альтернативы
Продолжать поддерживать непротестированные комбинации сборщиков мусора.
Тестирование
-
Тесты, проверяющие, что соответствующие флаги командной строки выводят предупреждения и сообщения об ошибках там, где это нужно.
-
Обеспечить, чтобы все оставшиеся комбинации сборщиков мусора проходили непрерывное тестирование.
Риски и допущения
По сути, относительно рассматриваемых комбинаций сборщиков мусора сделаны три допущения:
-
Большинство пользователей, которые сейчас используют Incremental CMS, выиграют от перехода на «обычный» CMS.
-
Пользователи DefNew + CMS выиграют, если вместо неё будут использовать ParNew + CMS.
-
Пользователи ParNew + SerialOld выиграют, если вместо неё будут использовать ParallelScavenge + SerialOld
Есть риск, что одно или несколько из этих допущений не подтвердятся. Насколько мы можем судить сейчас, этот риск невелик.
Последствия
-
Совместимость: параметры командной строки получат статус Deprecated.
-
Удобство для пользователей: некоторым пользователям, возможно, придётся сменить выбранный сейчас сборщик мусора. Надеемся, это будет изменение к лучшему.
-
Документация: поскольку параметры командной строки меняются, соответствующую документацию нужно обновить. Также нужно добавить примечания к выпуску.