Каково точное использование -XX+UseCMSCompactAtFullCollection?

Насколько я понимаю, он сообщает сборщику CMS выполнить уплотнение на старом поколении, когда произошел полный сборщик мусора.

Но я хочу подтвердить, правильно ли я это понимаю (собрано из разных источников):

Полный сборщик мусора приостанавливал бы мир, собирал и уплотнял старое поколение (используя результат этапа замечаний CMS), затем собирал молодое поколение, продвигал объекты (если они были) и возобновлял мир.

На данный момент в старом поколении может быть плавающий мусор, и UseCMSCompactAtFullCollection нужно очистить его и снова сжать старое поколение (по сути, еще один GC на старом поколении). Поскольку мир в любом случае остановлен, возможно, стоит немного больше сжать его.

Это описание верно? Я упустил какие-то важные детали? Спасибо


person stackoverflower    schedule 29.12.2015    source источник


Ответы (1)


Этот билет является хорошим ответом: https://bugs.openjdk.java.net/browse/JDK-8027132

В принципе мое понимание правильное. Был активный режим CMS, который запускается из фонового режима при сбое распределения (поскольку система не может продолжить работу, пока сбой не будет устранен).

-XX:+UseCMSCompactAtFullCollection указывает этому режиму переднего плана запустить уплотнение с использованием старого серийного номера. Это не влияет на полный сборщик мусора.

Режим переднего плана устарел в Java 8 (и запуск полного GC теперь является единственным вариантом), как и флаг.

Заключение

Флаг мертв и не используйте его.

person stackoverflower    schedule 31.12.2015