Полный GC против Major GC в G1 GC - PullRequest
0 голосов
/ 12 октября 2019

Я только начал изучать G1 GC. Это продолжение моего другого вопроса: Полный GC в G1 GC

Я натолкнулся на статью, в которой говорится, что full gc и major gc (коллекция старого поколения) - это две разные вещи и что full gcоднопоточный. Я запутался в этом. Если оба являются двумя разными вещами, то как полный gc собирает мусор, т. Е. Какой алгоритм, или фазы, или этапы выполняются во время полного gc в G1 GC.

1 Ответ

0 голосов
/ 13 октября 2019

В случае G1 существует способ, которым эти два можно дифференцировать (это не относится ко всем алгоритмам GC).

G1 использует области для кучи (обычно размер 1 МБ). Эти области памяти сгруппированы вместе, чтобы сформировать молодое и старое поколения как отдельные логические области. Для коллекции старого поколения G1 будет пытаться освободить достаточно места, просто восстанавливая регионы, в которых больше нет живых данных (очень дешево), или копировать живые данные из малонаселенных регионов в пустые регионы (таким образом максимизируя, сколько живых данных в этомрегион).

Однако, если G1 не может освободить достаточно места таким образом, он должен вернуться к полной коллекции сжатия.

Это объясняет, как существует различие между основной коллекцией и полной GC.

...