Пока я читаю Oracle документация по сборщику мусора G1, я заметил следующее:
When performing garbage collections, G1 operates in a manner similar to the CMS collector. G1 performs a concurrent global marking phase to determine the liveness of objects throughout the heap. After the mark phase completes, G1 knows which regions are mostly empty. It collects in these regions first, which usually yields a large amount of free space. This is why this method of garbage collection is called Garbage-First
Как упоминалось в приведенной выше цитате, G1 выбирает области, которые в основном пусты.
Мой вопрос: если какая-либо область в основном пуста, как это даст большой объем свободной памяти? Если он в основном пуст, это уже часть свободной памяти. не так ли?
Может ли кто-нибудь здесь помочь мне прояснить это?




Думайте о «сначала мусор» как о сокращении для «сначала самый мусор». То есть он определяет различные блоки воспоминаний, а затем отдает приоритет тем, которые содержат больше всего мусора, таким образом получая максимальную отдачу от затраченных средств.
Со страницы, которую вы цитировали:
G1 concentrates its collection and compaction activity on the areas of the heap that are likely to be full of reclaimable objects, that is, garbage. (emphasis added)
... в отличие от того, чтобы просто рассматривать каждый блок памяти как одинаково хороший для GC, даже если 99% его содержит живые объекты.
В этом предложении:
After the mark phase completes, G1 knows which regions are mostly empty.
«в основном пустой» означает «содержит наиболее пригодный для утилизации мусор». Это ясно из контекста. Цель фазы маркировки состоит в том, чтобы определить, какие объекты определенно или вероятно достижимы. Остальные определенно недостижимы и могут быть собраны.
Сбор регионов с наибольшим объемом освобождаемого пространства хорош по двум причинам:
В большинстве случаев вторая причина более значима. Редко бывает важно быстро вернуть пространство. Вам просто нужно, чтобы пространство было доступно, когда приложение запрашивает его. (Паузы GC — это другое дело, но они вызваны другими вещами.)