JEP 363: Remove the Concurrent Mark Sweep (CMS) Garbage Collector
Удаление сборщика мусора Concurrent Mark Sweep (CMS)
| Ответственный | Thomas Schatzl |
| Тип | Feature |
| Область | Implementation |
| Статус | Closed / Delivered |
| Выпуск | 14 |
| Компонент | hotspot / gc |
| Обсуждение | hotspot dash gc dash dev at openjdk dot java dot net |
| Трудоёмкость | S |
| Длительность | S |
| Связан с | JEP 291: Deprecate the Concurrent Mark Sweep (CMS) Garbage Collector |
| Рецензенты | Erik Helin, Mikael Vidstedt, Per Liden |
| Одобрен | Mikael Vidstedt |
| Создан | 2019/08/03 19:52 |
| Обновлён | 2020/06/18 13:39 |
| Задача | 8229049 |
Аннотация
Удалить сборщик мусора Concurrent Mark Sweep (CMS).
Что не является целью
- Удаление других сборщиков мусора не является целью.
- Целью не является удаление сборщика мусора CMS из выпусков, вышедших раньше выпуска, для которого предназначен этот JEP.
Мотивация
Более двух лет назад в JEP 291 мы пометили сборщик CMS как устаревший и подлежащий удалению в одном из будущих выпусков, чтобы ускорить разработку других сборщиков. За это время не нашлось ни одного заслуживающего доверия участника, который взялся бы сопровождать CMS.
За это же время появились два новых сборщика, ZGC и Shenandoah, а G1 получил дальнейшие улучшения. G1 задумывался как преемник CMS ещё с JDK 6. Теперь сборщики мусора, доступные в HotSpot JVM, либо превосходят CMS по производительности, либо уступают ему настолько незначительно, что CMS уже можно безопасно удалить. Мы ожидаем, что будущие улучшения существующих сборщиков ещё больше уменьшат потребность в CMS.
Описание
Это изменение отключит компиляцию CMS, удалит содержимое каталога gc/cms в дереве исходного кода и удалит параметры, относящиеся только к CMS. Упоминания CMS также будут удалены из документации. Тесты, которые пытаются использовать CMS, будут удалены или при необходимости адаптированы.
При попытке использовать CMS с помощью параметра -XX:+UseConcMarkSweepGC будет выведено следующее предупреждение:
Java HotSpot(TM) 64-Bit Server VM warning: Ignoring option UseConcMarkSweepGC; \
support was removed in <version>
после чего VM продолжит работу со сборщиком по умолчанию.
Альтернативы
Код CMS можно было бы оставить в репозитории, но не компилировать. Однако без сопровождающего этот код быстро устарел бы, но при этом мог бы создавать ложное впечатление, что он поддерживается.
Пользователи могут перейти на сборщик мусора G1 или на любой другой сборщик. Пользователи, которым CMS совершенно необходим, могут по-прежнему использовать его, пока он поддерживается в более ранних выпусках.