Spec-Zone .ru
спецификации, руководства, описания, API
|
Мусор Сначала (G1) сборщик "мусора" полностью поддерживается в Oracle JDK 7 обновлений 4 и более поздние выпуски. Коллектор G1 является сборщиком "мусора" стиля сервера, предназначенным для многопроцессорных машин с памятями большой емкости. Это встречает сборку "мусора" (GC) цели времени паузы с высокой вероятностью, достигая высокой пропускной способности. Операции целой "кучи", такие как глобальная маркировка, выполняются одновременно с потоками приложения. Это предотвращает прерывания, пропорциональные "куче" или живому размеру данных.
Коллектор G1 достигает высокой производительности и целей времени паузы через несколько методов.
"Куча" делится в ряд областей "кучи" равного размера, каждый непрерывный диапазон виртуальной памяти. G1 выполняет параллельную глобальную фазу маркировки, чтобы определить живые из объектов всюду по "куче". После того, как фаза метки завершается, G1 знает, какие области главным образом пусты. Это собирается в этих областях сначала, который обычно приводит к большому количеству свободного пространства. Это - то, почему этот метод сборки "мусора" вызывают Мусором Сначала. Как имя предполагает, G1 концентрирует свой набор и действие уплотнения на областях "кучи", которые, вероятно, будут полны исправимых объектов, то есть, мусора. G1 использует модель прогноза паузы, чтобы достигнуть определяемой пользователем цели времени паузы и выбирает число областей, чтобы собраться основанный на указанной цели времени паузы.
Области, идентифицированные G1 как готовый для восстановления, собираются "мусор", используя вакуумирование. G1 копирует объекты с одной или более областей "кучи" к единственной области на "куче", и в процессе и уплотняет и освобождает память. Это вакуумирование выполняется параллельно на многопроцессорных системах, чтобы уменьшить времена паузы и пропускную способность увеличения. Таким образом, с каждой сборкой "мусора", G1 непрерывно работает, чтобы уменьшить фрагментацию, работающую в пределах определяемых пользователем времен паузы. Это - вне возможности обоих предыдущие методы. CMS (Параллельный Марк Свип) сборка "мусора" не делает уплотнения. Сборка "мусора" ParallelOld выполняет только уплотнение целой "кучи", которое заканчивается в значительные времена паузы.
Важно отметить, что G1 не является коллектором в реальном времени. Это достигает цели времени паузы набора с высокой вероятностью, но не абсолютной уверенностью. Основанный на данных от предыдущих наборов, G1 делает оценку того, сколько областей может быть собрано в пределах пользователя определенное целевое время. Таким образом у коллектора есть разумно точная модель стоимости сбора областей, и это использует эту модель, чтобы определить, для который и скольких предназначаются области, чтобы собраться, оставаясь в пределах времени паузы.
Первый фокус G1 должен предоставить решение пользователям, запускающим приложения, которые требуют большой "кучи" с ограниченной задержкой GC. Это означает размеры "кучи" приблизительно 6 Гбайт или большее, и устойчивое и предсказуемое время паузы ниже 0.5 секунд.
Приложения, работающие сегодня или с CMS или со сборщиком "мусора" ParallelOld, принесли бы пользу переключению на G1, если приложение имеет один или больше следующих черт.
G1 планируется как долгосрочная замена Параллельный Коллектор Развертки Марка (CMS). Сравнивая G1 с CMS, есть различия, которые делают G1 лучшим решением. Одно различие - то, что G1 является коллектором уплотнения. G1 уплотняет достаточно, чтобы полностью избежать использования мелкомодульных свободных списков для выделения, и вместо этого полагается на области. Это значительно упрощает части коллектора, и главным образом устраняет потенциальные проблемы фрагментации. Кроме того, G1 предлагает более предсказуемые паузы сборки "мусора" чем коллектор CMS, и позволяет пользователям определять требуемые цели паузы.
Если Вы интересуетесь помоганием улучшению G1, пожалуйста, попробуйте это и дайте обратную связь через OpenJDK и hotspot-gc-use@openjdk.java.net список рассылки.