Oracle представила новый сборщик мусора ZGC

Компания Oracle представила проект ZGC — новый сборщик мусора, призванный обеспечить малое время отклика даже при работе с очень большими хипами. В соответствующем письме приведены подробности, перескажем тут главные из них.

Ранее работа над проектом велась внутри Oracle в закрытом режиме, а теперь решено было опенсорснуть его (формально компания только «предлагает» это, а решит всё голосование, но вряд ли тут возникнут возражения). Сейчас всё совсем не в production-ready стадии и впереди много работы, но и сделано тоже уже много.

Три главных ориентира ZGC:

  • Работа с многотерабайтными хипами
  • Паузы в пределах 10 миллисекунд
  • Проседание в пропускной способности не более 15% по сравнению с G1

Поскольку поведение GC очень зависит от конкретного проекта, никто не обещает, что все три этих условия будут одновременно выполняться при абсолютно любых условиях. Но рассчитывают на их выполнение в широком круге проектов, и это уже было достигнуто на «некоторых известных бенчмарках, ставших стандартом в индустрии».

ZGC не делит ничего на поколения (с оговоркой «в данный момент»), зато делит на регионы. Stop-the-World паузы ограничены сканированием корней, поэтому гигантские хипы не должны становиться причиной долгих задержек.

«Новый Java GC с регионами и без поколений, который ориентирован на уменьшение пауз и ради этого готов поступиться частью пропускной способности» — это, конечно, многим может ЧТО-ТО НАПОМИНАТЬ. Одну там разработку, о которой один там спикер рассказывал весной на паре там конференций. Но сам Шипилёв сравнивает новый сборщик не с Shenandoah, а с C4 от Azul Systems:

Пока деталей о ZGC мало, он выражает сомнения, но в то же время признаёт, что в будущем они могут оказаться развеяны:

Тут, конечно, не можем не напомнить, что уже на следующей неделе Шипилёв выступит на Joker со вторым докладом о Shenandoah. А для тех, кто пропустил первый, мы накануне Joker проводим бесплатный митап. В общем, будет где попытать Алексея вопросами о Shenandoah, ZGC и всём на свете!

  1. Алексей Шипилёв
    Работает над производительностью Java вот уже почти 10 лет. Успел позаниматься производительностью Apache Harmony в Intel, затем перешёл в Sun Microsystems, а потом и в Oracle, где работал над производительностью Sun/Oracle JDK, в том числе производительностью JVM, библиотек классов, фреймворков и приложений. На данный момент трудится в Red Hat. Являлся техническим представителем Oracle в Standard Performance Evaluation Corporation (SPEC), занятой разработкой и поддержкой промышленных бенчмарков. В данный момент серьезную часть времени тратит на Java Microbenchmark Harness, инструмент для измерения производительности Java-кода. @shipilev