G1GC еще официально не готова к производству? - PullRequest
30 голосов
/ 03 декабря 2011

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

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

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

Сборка мусора Java 7 (JDK 7) и документация по G1

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

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

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

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

Ответы [ 6 ]

12 голосов
/ 08 декабря 2011

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

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

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

РЕДАКТИРОВАТЬ: @scravy отправил электронное письмо в список рассылки, это ответ полученный:

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

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

-Джон

РЕДАКТИРОВАТЬ: Согласно эта ссылка на Oraclesite похоже, что G1GC теперь полностью поддерживается.

6 голосов
/ 20 июня 2012

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

Мы используем следующие настройки 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
2 голосов
/ 06 декабря 2011

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

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

Кроме того,

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

Так что G1 предположительно заменит CMS, когда выйдет официальный JDK SE 7.

1 голос
/ 15 февраля 2016

G1 GC готов к работе после запуска версии Java 7 update 4.

Из oracle article (в разделе «Сборщик мусора G1») вы можете найти реальные варианты использования G1 GC.

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

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

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

Сборка мусора Java 7 (JDK 7) и документация по G1

По поводу других ваших запросов:

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

  1. G1GC стабильна.
  2. В этом алгоритме нет утечек.
  3. Oracle не сохранил его без документов. Вы можете найти больше информации о G1GC здесь и здесь
  4. G1 не является провальным проектом, и G1GC будет алгоритмом GC по умолчанию в более новых версиях Java ( Java 9 )
  5. Вам не нужно платить за поддержку. Это не бета.
1 голос
/ 07 июля 2012

Похоже, страница, ссылка на вопрос была обновлена:

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

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

1 голос
/ 10 декабря 2011

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

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

...