Главные и второстепенные сборщики мусора на Яве

Я читал о сборке мусора в Java и SO Q &А яЯ запутался в типах сборки мусора.

Позволять'Возьмите Пропускной коллектор в качестве примера. (он же параллельный коллектор). Документы говорят, что он использует несколько потоков, чтобы сделатьНезначительный коллекции и единственная тема дляОсновной коллекции (так же, как серийный сборщик).

Теперь мои вопросы:

Что означает «Полный сборщик мусора»: а) Означает ли это, что сделаны как второстепенные, так и основные сборники? Или б) Полный GC == Основные коллекции? Который из них?Если а), означает ли это, что Малая коллекция по-прежнему выполняется с использованием нескольких потоков, тогда как основная была выполнена с использованием Single?Если б), означает ли это Старые поколения были очищены с помощью Single Thread?

Также, 4. Влияет ли Full GC только на OldGeneration или YoungGeneration?

Заранее спасибо.

 Imposter15 мая 2013 г., 04:44
+1 Спасибо за вопрос

Ответы на вопрос(2)

по крайней мере, эта часть устарела:

Это зависит. JVM сообщает о каждой Основной Коллекции как Full GC.

И CMS, и G1 различают коллекции нового поколения (второстепенные), параллельные коллекции старого поколения и полный gcs. Последние являются последним средством, и большая часть GCing должна обрабатываться новыми поколениями и параллельными коллекциями.

Решение Вопроса

Позволять'Возьмите Пропускной коллектор в качестве примера. (он же параллельный коллектор). В документах говорится, что он использует несколько потоков для создания второстепенных коллекций и один поток для основных коллекций (так же, как последовательный сборщик).

Вот'Что-то понять. По умолчанию в большинстве новых систем JVM использует два разных сборщика мусора для молодого и старого поколений. На моей моей машине: у меня естьПараллельный Новый Коллектор для молодого поколения иОдновременный сборщик меток и свипов для старшего поколения.

Minor Collection запускается, когда JVM не может выделить место для нового объекта (помните: новые объекты всегда выделяются в Young Generation 'Район Области).

Следующий вопрос:

Что означает «Полный сборщик мусора»: а) Означает ли это, что сделаны как второстепенные, так и основные сборники? Или б) Полный GC == Основные коллекции? Который из них?

а также,

Также, 4. Влияет ли Full GC только на OldGeneration или YoungGeneration?

Это зависит. JVM сообщает о каждой Основной Коллекции как Full GC. [Попробуйте с этими флагамиjava -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamp]. Педантическое определение состоит в том, что Full GC сначала запускает Minor, а затем Major (хотя порядок можно поменять, если старшее поколение заполнено, и в этом случае оно освобождается первым, чтобы позволить ему получать объекты из молодого поколения).

Хорошо, вернемся к делу. JVM рассматривает Major Collection [в старшем (или пермском) поколении] как Full GC. Ниже приведены выводы из программы, которую я смог быстро написать, чтобы проиллюстрировать это. Первая строка - Minor GC, а вторая - Major (Full) GC. Вы можете видеть, что это произошло только в старшем поколении (CMS) и смогло уменьшить старое поколение с 1082K до 1034K.

11.431: [GC 11.431: [ParNew: 1152K->128K(1152K), 0.0009893 secs] 2111K->1210K(6464K), 0.0010182 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]17.882: [Full GC (System) 17.882: [CMS: 1082K->1034K(5312K), 0.0212614 secs] 2034K->1034K(6464K), [CMS Perm : 9426K->9410K(21248K)], 0.0213200 secs] [Times: user=0.02 sys=0.00, real=0.02 secs]

Следующий вопрос:

Если а), означает ли это, что Малая коллекция по-прежнему выполняется с использованием нескольких потоков, тогда как основная была выполнена с использованием Single?

Да. Смотрите начало моего ответа. Молодое и старшее поколения обслуживаются разными коллекционерами. Для Young Generation вы можете использовать любое из следующего:

-XX:+UseSerialGC-XX:+UseParallelGC-XX:+UseParNewGC

Для Old Generation доступны следующие варианты:

-XX:+UseParallelOldGC-XX:+UseConcMarkSweepGC
 Imposter15 мая 2013 г., 04:44
Четкий вопрос и кристально чистый ответ
 amarnath harish16 июл. 2018 г., 12:27
Мне нужно разъяснение, главный GC также будет собирать pern gen? или полный GC это делает?
 Frank Pavageau15 мая 2013 г., 10:32
Там'также-XX:+UseG1GC в HotSpot 6 (но не в первых выпусках) и 7, который управляет молодым и старым поколениями.

Ваш ответ на вопрос