Подтвердить что ты не робот

Готово ли G1GC официально готовить продукцию?

Интересно, какой официальный статус сборщика мусора первым (G1) в выпуске JDK 7. Я хотел бы использовать G1 как альтернативу CMS с низкой паузой, но только если я действительно могу доверять ее надежности.

До того, как JDK 7 вышел, G1 был объявлен блестящим новым gc, который заменит сборщик CMS и даже станет gc по умолчанию в JDK 7. Однако теперь с Oracle JDK 7u1 G1 не является стандартным gc на любом машина, которую я пробовал.

Несмотря на то, что при использовании -XX:+UseG1GC в JDK 7 больше не нужно указывать -XX:+UnlockExperimentalVMOptions, это функция JVM, официально официально недокументированная:

Сбор и сбор мусора Java 7 (JDK 7) на G1

Единственный официальный документ, который я мог бы найти, который упоминает G1, серьезно устарел и был написан задолго до выхода JDK 7:

http://www.oracle.com/technetwork/java/javase/tech/g1-intro-jsp-135488.html

Например, официальная документация "Параметры Java Java HotSpot" (http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html) документирует, как включать и настраивать другие коллекторы, но даже не упоминает о существовании G1. Как будто этого не было!

Это довольно запутанно, и мне интересно, каков реальный статус G1 и каково его будущее. Это действительно стабильно? Были ли устранены оставшиеся проблемы (например, утечки, ложные сбои и отсутствие поддержки инструментария)? И если да, то почему Oracle рассматривает G1GC как незарегистрированный (неловкий?) Секрет? Является ли G1 неудачным проектом, который теперь молча прекращается? Или мне нужно заплатить за документацию и поддержку? Или это просто бета-версия? Может кто-нибудь просветить меня о том, что происходит здесь?

4b9b3361

Ответ 1

Место, где можно задать этот вопрос, находится в списке рассылки hotspot-gc-dev.

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

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

EDIT: @scravy отправил письмо в список рассылки, это ответ получен:

Я не думаю, что есть простой ответ на этот вопрос, хотя       возможно нет. Первоначальный фокус G1 состоял в том, чтобы обеспечить разумные паузы       для чрезвычайно больших куч. Это означает, что сегодня это может быть не       лучший выбор для всех. Мы считаем, что технология имеет много       но это означает, что с адаптацией он может решать многие       различные требования к сбору мусора. Поэтому в один прекрасный день       может эффективно быть сборщиком по умолчанию, но слишком рано       знать наверняка.

Учитывая, что изменения поведения GC могут быть очень разрушительными для       существующие развертывания, мы неохотно делаем такие сдвиги       даже в крупных выпусках без существенного предварительного уведомления. Итак, в текущих выпусках, если вы       не указывайте коллекционер, мы пытаемся сделать несколько простых       но я сомневаюсь, что мы внесем радикальные изменения в этот       поведение в ближайшей перспективе.

Для большего вопроса, касающегося поддержки G1, текущий       ответ - нет. Но имейте в виду, что       Oracle делает своим платные клиенты для поддерживаемых продуктов.       довольно значительным, и есть намного больше, чем просто встреча       требования к функциональности и надежности.

Мы продолжаем поощрять всех к тестированию и оценке G1 и       конечно, доставьте нам обратную связь, поскольку мы продолжаем       разработки на G1.

-Джон

EDIT: согласно эта ссылка на сайте Oracle, похоже, что G1GC теперь полностью поддерживается.

Ответ 2

Мы уже используем G1GC, начиная с почти года и половины. Он отлично справляется с нашей критически важной транзакционной системой обработки данных, и она оказалась отличной поддержкой высокой пропускной способности, низкой паузой, concurrency, многопоточным и оптимизированным управлением большой памятью.

Мы используем следующие настройки JVM:

-server -d64 -Xms512m -Xmx3072m -XX:+HeapDumpOnOutOfMemoryError -XX:+UseG1GC
-XX:+UnlockExperimentalVMOptions -XX:+AggressiveOpts -XX:+DoEscapeAnalysis
-XX:MaxGCPauseMillis=400 -XX:GCPauseIntervalMillis=8000 
-XX:+UseCompressedOops -XX:NewRatio=50

Ответ 3

В соответствии с этим: http://www.oracle.com/technetwork/java/javase/tech/g1-intro-jsp-135488.html,

Развитие G1 теперь сосредоточено в основном на решении любых оставшихся проблемы надежности и повышения производительности

Кроме того,

В терминах времени паузы GC G1 иногда лучше, а иногда и хуже чем CMS. Продолжается работа над тем, чтобы G1 был так же хорош, как если бы лучше, чем CMS.

Итак, G1 якобы собирается заменить CMS, когда официальный JDK SE 7 отсутствует.

Ответ 4

AFAIK, G1 не секрет - он открыт для экспериментального использования достаточно долго - не менее года или двух. Каждый JavaOne предлагает некоторые рекомендации о том, насколько хорош G1:)

Из неофициальных источников: это один из текущих фокусов для разработчиков java, чтобы окончательно подготовить G1. Они просто не были готовы открыть его для JDK 7. Просто продолжайте ждать:)

Ответ 5

Похоже, обновлена ​​страница, связанная в вопросе:

Сборщик мусора Garbage-First (G1) полностью поддерживается в Oracle JDK 7 обновляет 4 и более поздние версии.

(Обратите внимание, однако, что для встроенных платформ, таких как ARM, он еще не поддерживается вообще в 7u4.)

Ответ 6

G1 GC готов к выпуску с момента запуска версии версии 7 версии 7.

Из oracle статья (в разделе G1 Garbage Collector) вы можете найти реальные варианты использования G1 GC.

Приложения, запущенные сегодня с CMS или сборщиком мусора ParallelOldGC, выиграют от перехода на G1, если приложение имеет одну или несколько из следующих характеристик.

  • Длительность полной GC слишком длинная или слишком частая.
  • Частота распределения или продвижения объекта значительно варьируется.
  • Нежелательная длительная сборка мусора или прессование (более 0,5 до 1 секунды)

Посмотрите на связанный вопрос для получения более подробной информации о настройке G1GC и ключевых параметрах:

Сбор и сбор мусора Java 7 (JDK 7) на G1

Относительно ваших других запросов:

Действительно ли он стабилен? Были ли устранены оставшиеся проблемы (например, утечки, ложные сбои и отсутствие поддержки инструментария)? И если да, то почему Oracle рассматривает G1GC как незарегистрированный (неловкий?) Секрет? Является ли G1 неудачным проектом, который теперь молча прекращается? Или мне нужно заплатить за документацию и поддержку? Или это просто бета-версия? Может кто-нибудь просветить меня о том, что происходит здесь?

  • G1GC устойчив.
  • Я не нашел утечек в этом алгоритме.
  • Oracle не оставил его недокументированным. Вы можете найти дополнительную информацию о G1GC здесь и здесь
  • G1 не является неудачным проектом, и G1GC будет использоваться алгоритмом GC по умолчанию в новых версиях java (java 9)
  • Вам не нужно платить за поддержку. Это не бета.