Spec-Zone .ru
спецификации, руководства, описания, API
|
Мусор Сначала (G1), Коллектор является сборщиком "мусора" стиля сервера, предназначенным для многопроцессорных систем с большими памятями, который удовлетворяет цели мягкого реального времени с высокой вероятностью, достигая высокой пропускной способности. G1 является долгосрочной заменой Параллельного Коллектора Развертки Марка (CMS). Операции целой "кучи", такие как глобальная маркировка, выполняются одновременно с потоками приложения, чтобы предотвратить прерывания, пропорциональные "куче" или живому размеру данных. Параллельная маркировка обеспечивает и набор "законченность" и идентифицирует области, готовые для восстановления через уплотнение вакуумирования. Это вакуумирование выполняется параллельно на многопроцессорных системах, чтобы уменьшить времена паузы и пропускную способность увеличения.
Коллектор G1 достигает этих целей через несколько методов. "Куча" делится в ряд областей "кучи" равного размера, каждый непрерывный диапазон виртуальной памяти. G1 уплотняет, как он продолжается. Это копирует объекты с одной области "кучи" к другому. Таким образом это не будет встречаться с проблемами фрагментации, с которыми мог бы встретиться CMS. Всегда будут области непрерывного свободного пространства, от которого можно выделить, позволяя G1 иметь непротиворечивые паузы в течение долгого времени. G1 использует модель прогноза паузы, чтобы достигнуть определяемой пользователем цели времени паузы. Это достигает более гладких времен паузы чем CMS в сопоставимой пропускной способности.
После того, как G1 выполняет глобальную переменную, отмечающую фазу, определяющую живые из объектов всюду по "куче", это будет сразу знать, где в "куче" есть области, которые главным образом пусты. Это займется теми областями сначала, потенциально делая много доступного пространства. Таким образом, сборщик "мусора" получит больше передышки, уменьшая вероятность полного GC. Это также, почему сборщик "мусора" вызывают Мусором Сначала. Как его имя предполагает, G1 концентрирует свой набор и действие уплотнения сначала на областях "кучи", которые, вероятно, будут полны исправимых объектов, таким образом улучшая ее эффективность.
В то время как большинство работы коллекторов в реальном времени над очень гранулированным уровнем отдельных объектов, G1 собирается на уровне области. Если какая-либо область не содержит живых объектов, она была сразу исправлена. Пользователь может определить цель для пауз, и G1 сделает оценку того, сколько областей может быть собрано в то время, основанное на предыдущих наборах. Так, у коллектора есть разумно точная модель стоимости сбора областей, и поэтому "коллектор может выбрать ряд областей, которые могут быть собраны в пределах данного ограничения по времени паузы с высокой вероятностью." Другими словами G1 не является коллектором жесткого реального времени - он удовлетворяет цели мягкого реального времени с высокой вероятностью, но не абсолютной уверенностью. G1 пытается привести к более высокой пропускной способности взамен более мягкого, но все еще умеренно строгие, ограничения реального времени. Это - подходящий вариант для крупномасштабных серверных приложений, у которых часто есть большое количество живых данных "кучи" и значительного параллелизма на уровне потоков. G1 также обеспечивает некоторое более прекрасное управление, разрешая пользователю определить часть времени в течение периода выполнения, которое будет потрачено на сборку "мусора". Например, для каждых 250 мс выполнения тратят не больше, чем 50 мс на сборку "мусора".
G1 планируется, чтобы заменить CMS в JVM Горячей точки. Есть два существенных различия между CMS и G1. Прежде всего, G1 является коллектором уплотнения. G1 уплотняет достаточно, чтобы полностью избежать использования мелкого модуля свободные списки для выделения, которое значительно упрощает части коллектора и главным образом устраняет потенциальные проблемы фрагментации. Так же как уплотняя, G1 предлагает более предсказуемые паузы сборки "мусора" чем коллектор CMS и позволяет пользователям ставить свои требуемые цели паузы.