Насколько стабилен сборщик мусора Z, представленный в Java11?

Я использую Java 11 и новый сборщик мусора Z (ZGC) кажется действительно многообещающим.

Документы говорят, что он использует какой-то механизм сборки мусора с малой задержкой, такой что GC время паузы никогда не превышает 10 ms, очень хорошо обрабатывает большие кучи и позволяет возвращать неиспользуемую память кучи в ОС, которой не было в старых GC

Меня беспокоит: насколько стабилен ZGC и есть ли риски, если кто-то продвинется с ним в продвижении?

Благодарность!

2 ответа

Решение

Согласно странице JEP 377 (обновление 2020/05/25):

С момента его появления в JDK 11 мы получили положительные отзывы, мы устранили множество ошибок и добавили ряд функций и улучшений. Чтобы выделить некоторые из наиболее важных:

  • Выгрузка параллельных классов
  • Удаление неиспользуемой памяти (JEP 351)
  • Максимальный размер кучи увеличен с 4 ТБ до 16 ТБ.
  • Минимальный размер кучи уменьшен до 8 МБ
  • -XX:SoftMaxHeapSize
  • Поддержка профилировщика утечек JFR
  • Поддержка совместного использования данных класса
  • Ограниченные и несмежные адресные пространства
  • Поддержка размещения кучи в NVRAM
  • Повышение осведомленности о NUMA
  • Многопоточное предварительное касание кучи

Кроме того, теперь поддерживаются все часто используемые платформы:

  • Linux / x86_64 (JEP 333)
  • Linux / aarch64 (8214527)
  • Windows (JEP 365)
  • macOS (JEP 364)

Тестирование ZGC показывает, что он стабилен, и на момент написания этой статьи мы не получали новых ошибок, связанных с ZGC, в течение нескольких месяцев. Благодаря стабильности, набору функций и поддержке платформы, которые ZGC имеет сегодня, пора отменить его экспериментальный статус и сделать его функцией продукта.

Пара предостережений:

  • Это исходит от команды, работающей над проектом ZGC. Есть вероятность, что они не совсем объективны. (Это просто человеческая природа...).
  • Это зависит от того, сколько людей (команда и пользователи) тестируют / пробуют новый GC.
  • Это зависит от того, что они тестируют / пробуют, и соответствует ли это тому, что вы предлагаете сделать.
  • С такой сложной задачей, как новый Java GC, могут потребоваться годы, чтобы некоторые ошибки появились в воспроизводимой форме.

Таким образом, хотя это многообещающе, это НЕ считается количественной мерой стабильности и не дает количественной оценки риска.

ZGC по-прежнему является экспериментальной функцией. В JDK 15 планируется сделать это функцией продукта.

Другие вопросы по тегам