Позвольте мне объяснить.
В качестве примера возьмем коллектор пропускной способности. (он же параллельный коллектор). Документы говорят, что он использует несколько потоков для создания небольших коллекций и одного потока для основных коллекций (то же, что и для последовательного коллектора).
Вот что нужно понимать. По умолчанию в большинстве новых систем JVM использует два разных сборщика мусора для молодых и старых поколений. На моей моей машине: у меня есть Параллельный новый коллектор для молодого поколения и Параллельный Марк и Sweep Collector для старшего поколения.
Незначительная коллекция запускается, когда тогда JVM не может выделить место для нового объекта (помните: новые объекты всегда выделяются в Eden Area Young Generation).
Следующий вопрос:
Что означает Полным GC: а) Означает ли это, как мелкие и крупные коллекции сделаны? Или b) Полный GC == Основные коллекции? Который из них?
и
Кроме того, 4. Имеет ли Full GC влияет только на OldGeneration или YoungGeneration, а?
Это зависит. JVM сообщает каждую основную коллекцию как полную GC. [Попробуйте с этими флагами java -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamp
].Педантичное определение состоит в том, что Full GC запускает Minor сначала, а затем Major (хотя порядок можно переключить, если «Пожилое поколение» заполнено, и в этом случае он сначала освобождается, чтобы позволить ему получать объекты из Young Generation).
ОК, обратно в пункт. 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]
Следующий вопрос:
Если), это означает, что Minor коллекция до сих пор осуществляется с использованием нескольких потоков, тогда как Major было сделано, используя Single?
Да. См. Начало моего ответа. Молодые и пожилые поколения обслуживаются разными Коллекционерами. Для молодого поколения, вы можете использовать один из следующих вариантов:
-XX:+UseSerialGC
-XX:+UseParallelGC
-XX:+UseParNewGC
Для старого поколения, доступные варианты:
-XX:+UseParallelOldGC
-XX:+UseConcMarkSweepGC
+1. Спасибо, что задали мой вопрос – Imposter