Адаптивный размер в сборщиках мусора JVM
Для режима сервера Oracle JVM 1.8 можно Parallel
, CMS
, а также G1
Коллекторы динамически меняют соотношение молодого поколения к старому поколению? Каково соотношение по умолчанию молодого поколения к старому поколению в этих трех сборщиках?
Parallel = -XX:+UseParallelGC -XX:+UseParallelOldGC
CMS = -XX:+UseConcMarkSweepGC
G1 = -XX:+UseG1GC
2 ответа
Значения по умолчанию часто зависят от версии и машины или могут изменяться в зависимости от других устанавливаемых параметров. Так что лучше всего просто запросить JVM.
например, использовать java -XX:+UseG1GC -XX:+PrintFlagsFinal
чтобы увидеть значения по умолчанию, включая те, которые получены на основе выбранного G1.
G1 и параллельный коллектор поддерживают адаптивное определение размеров, а CMS - нет, вместо этого он настраивает пороги владения во время выполнения.
Что ж, это может быть не в состоянии ответить на точные детали с точки зрения того, каково соотношение ГХ как таковых, но эта статья под названием oraclecollectors говорит о том, что здесь будет подробно описано:
Говоря о комбинациях сборщиков мусора, он не превращается в дюжину комбинаций, потому что не все эти сборщики работают друг с другом.
G1
по сути, антисоциальный коллекционер, которому не нравится работать с кем-либо еще.Серийные коллекционеры - "собранные последним" коллекционеры
Коллекционерам "PS" нравится работать друг с другом;
ParNew
а такжеConcurrent
Коллекционеры хорошо работают вместе.
Начиная с Java9 (с возможностью отключения политики адаптивного определения размеров) и JEP 248: сделать G1 сборщиком мусора по умолчанию, и это почти все, что будет только один GC. До сих пор, хотя все еще существует возможный список, который автор придумал с точки зрения параметров алгоритма сборки мусора. Совместное использование экрана из самой связанной статьи:
Надеюсь, это поможет.