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

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:+UseConcMarkSweepGC
DefNew + CMS
-XX:+UseParNewGC ParNew + SerialOld
-Xincgc ParNew + iCMS
-XX:+CMSIncrementalMode
-XX:+UseConcMarkSweepGC
ParNew + iCMS
-XX:+CMSIncrementalMode
-XX:+UseConcMarkSweepGC
-XX:-UseParNewGC
DefNew + iCMS

Альтернативы

Продолжать поддерживать непротестированные комбинации сборщиков мусора.

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

  • Тесты, проверяющие, что соответствующие флаги командной строки выводят предупреждения и сообщения об ошибках там, где это нужно.

  • Обеспечить, чтобы все оставшиеся комбинации сборщиков мусора проходили непрерывное тестирование.

Риски и допущения

По сути, относительно рассматриваемых комбинаций сборщиков мусора сделаны три допущения:

  • Большинство пользователей, которые сейчас используют Incremental CMS, выиграют от перехода на «обычный» CMS.

  • Пользователи DefNew + CMS выиграют, если вместо неё будут использовать ParNew + CMS.

  • Пользователи ParNew + SerialOld выиграют, если вместо неё будут использовать ParallelScavenge + SerialOld

Есть риск, что одно или несколько из этих допущений не подтвердятся. Насколько мы можем судить сейчас, этот риск невелик.

Последствия

  • Совместимость: параметры командной строки получат статус Deprecated.

  • Удобство для пользователей: некоторым пользователям, возможно, придётся сменить выбранный сейчас сборщик мусора. Надеемся, это будет изменение к лучшему.

  • Документация: поскольку параметры командной строки меняются, соответствующую документацию нужно обновить. Также нужно добавить примечания к выпуску.