что вызывает java minor gc - PullRequest
       0

что вызывает java minor gc

1 голос
/ 17 февраля 2012

Я говорю об UseParNewGC.Мое понимание java gc minor collection выглядит следующим образом.Когда jvm обнаруживает, что eden заполнен (или не может удовлетворить запрос на выделение)

  1. Останавливает все потоки приложения
  2. Вычисляет живые объекты в eden и одно пространство оставшихся в живыхи перемещает их в другое
  3. Если для перемещения недостаточно места или если оставшиеся в живых объекты старые, достаточно, он продвигается в старое поколение.
  4. Отмечаетeden и очищенный оставшийся в живых как пустой
  5. возобновляет потоки приложения.

Совершенно верно?Есть ли случай, когда младший gc будет запущен, даже если eden не заполнен?

Ответы [ 2 ]

1 голос
/ 17 февраля 2012

Я думаю, вы правильно поняли процесс. В некоторых ситуациях основной GC запускается по причинам, отличным от полного пробела, например при вызове System.gc() или RMI. В этом случае также будет запущен второстепенный сборщик мусора.

0 голосов
/ 08 мая 2012

Когда jvm обнаруживает, что eden заполнен (или не может удовлетворить запрос на выделение). В некотором смысле, да.Но это динамически измеряет поколение, чтобы встретить определенные цели коллекционера.В основном время паузы и доля процессорного времени, потраченного на сборщик мусора.

Таким образом, косвенно эти цели определяют частоту второстепенных сборов.Основные коллекции могут также запускать небольшую коллекцию до запуска, чтобы уменьшить количество ссылок на старые объекты из недолговечных молодых.

...