HotSpot имеет в общей сложности 7 сборщиков мусора, 3 сборщика мусора молодого поколения, 3 сборщика мусора старого поколения и G1, которые составляют в общей сложности 7 дополнительных комбинаций сборщиков мусора.
Существует 6 комбинаций между сборщиками мусора нового поколения и сборщиками мусора старого поколения, и каждый сборщик мусора нового поколения соответствует 2 комбинациям.
Serial Old (MSC) можно комбинировать со всеми коллекторами нового поколения, всего 3 комбинации
Когда JVM указывает только сборщик мусора нового поколения, старое поколение по умолчанию использует сборщик мусора Serial Old (со сжатием).:
-XX:+UseSerialGC
Серийный номер (DefNew) + старый серийный номер (Serial Mark Sweep Compact)
-XX:+UseParNewGC
Параллельный (ParNew) + серийный старый (Serial Mark Sweep Compact)
-XX:+UseParallelGC
Parallel Scavenge (PSYoungGen) + Serial Old (Serial Mark Sweep Compact (PSOldGen))
Примечание. В архитектуре сборщика Parallel Scavenge имеется сборщик PS MarkSweep для сбора данных о старости, но поскольку реализация PS MarkSweep очень близка к Serial Old, во многих официальных материалах для пояснений напрямую используется Serial Old вместо PS MarkSweep.
Parallel Old (со сжатием) можно комбинировать только с Parallel Scavenge.
-XX:+UseParallelOldGC
Parallel Scavenge (PSYoungGen) + Parallel Mark Sweep Compact (ParOldGen)
CMS (без сжатия) можно комбинировать с Serial и ParNew, всего 2 комбинации
-XX:-UseParNewGC -XX:+UseConcMarkSweepGC
Серийный (DefNew) + CMS (одновременный анализ меток)
-XX:+UseParNewGC -XX:+UseConcMarkSweepGC
Parallel (ParNew) + CMS (Concurrent Mark Sweep) + Serial Old (Serial Mark Sweep Compact)
G1 (Garbage First), нет необходимости в других сборщиках мусора
-XX:+UseG1GC
6 Схема комбинаций сборки мусора
blogs.Oracle.com/Jon Tianhe City OL имеет…
Сборщик мусора молодого поколения
Все сборщики мусора нового поколения, все используют алгоритм копирования, произойдет остановка мира. Поскольку жизненный цикл большинства объектов обычно относительно короткий, вероятность повторного использования в новом поколении очень высока.Сборка мусора нового поколения обычно может восстановить большую часть объектов, поэтому алгоритм репликации более эффективен.
Serial
При использовании алгоритма репликации во время сборки мусора происходит остановка мира с использованием одного потока сборки мусора..
"Serial" is a stop-the-world, copying collector which uses a single GC thread.
ParNew
При использовании алгоритма репликации во время сборки мусора происходит остановка мира, и используются несколько потоков сборки мусора..
Одно из основных различий между ParNew и Parallel Scavenge заключается в том, что ParNew можно использовать с CMS.
"ParNew" is a stop-the-world, copying collector which uses multiple GC threads. It differs from "Parallel Scavenge" in that it has enhancements that make it usable with CMS. For example, "ParNew" does the synchronization needed so that it can run during the concurrent phases of CMS.
Parallel Scavenge
При использовании алгоритма репликации во время сборки мусора происходит остановка мира, и используются несколько потоков сборки мусора..Коллектор с приоритетом пропускной способности, может управлять максимальным временем приостановки сборки мусора (-XX:MaxGCPauseMillis) и размером пропускной способности (-XX:GCTimeRatio), поддерживать политику адаптивной настройки GC (GC Ergonomics, соответствующий параметр -XX:+UseAdaptiveSizePolicy).
"Parallel Scavenge" is a stop-the-world, copying collector which uses multiple GC threads.
Сборщик мусора старого поколения
Помимо CMS, во время GC останавливаются другие старые сборщики мусора, и они будут уплотняться после очистки мусора..
Serial Old
Алгоритм сортировки с использованием маркера, возникновение стоп-мира GC, GC с использованием одного потока.
"Serial Old" is a stop-the-world, mark-sweep-compact collector that uses a single GC thread.
CMS
CMS использует алгоритм маркировки-очистки и является сборщиком мусора, нацеленным на малое время паузы. Сборка мусора выполняется одновременно большую часть времени, и остановка мира по-прежнему происходит на двух этапах инициализации, маркировки и перемаркировки, а остальные этапы выполняются одновременно..
"CMS" is a mostly concurrent, low-pause collector.
7 этапов CMS GC на Java:Tickets.WeChat.QQ.com/Yes/VM NBL rm7 Боюсь…
Parallel Old
Используя алгоритм сортировки меток, во время сборки мусора происходит остановка мира с использованием нескольких потоков сборки мусора..
"Parallel Old" is a compacting collector that uses multiple GC threads.
G1
G1 делит всю кучу на несколько независимых областей одинакового размера (Region), сохраняет концепцию поколений молодых и старых (но они больше не изолированы физически).
С общей точки зрения он основан на алгоритме сортировки меток, а с локальной (между двумя Регионами) точки зрения - на алгоритме репликации.. Таким образом, можно избежать фрагментации пространства памяти и предотвратить сбои в параллельном режиме.
Используйте несколько потоков GC, чтобы каждый раз сначала перезапускать регион с наибольшим значением..
Поддерживает предсказуемую модель времени паузы, которая повышает эффективность сбора данных и сокращает время остановки..
The Garbage First or G1 garbage collector is available in Java 7 and is designed to be the long term replacement for the CMS collector. The G1 collector is a parallel, concurrent, and incrementally compacting low-pause garbage collector that has quite a different layout from the other garbage collectors described previously.
2 рекомендуемые комбинации ГХ
1. Сборщик мусора на основе малого времени паузы
-XX:+UseConcMarkSweepGC (этот параметр неявно включает -XX:+UseParNewGC)
2. На основании приоритета пропускной способности мусора
-XX:+UseParallelOldGC (этот параметр неявно включает -XX:+UseParallelGC)
Ссылаться на
blogs.Oracle.com/Jon Tianhe City OL имеет…
блог Если акридиновый хороший kids.info/2016/10/hot…
docs.Oracle.com/java-color/8/do…
Woohoo. Oracle.com/веб-папка/he…
«Глубокое понимание расширенных функций и лучших практик JVM виртуальной машины Java» Чжоу Чжимин
Полное руководство по производительности Java
7 этапов CMS GC на Java:Tickets.WeChat.QQ.com/Yes/VM NBL rm7 Боюсь…
Личный публичный аккаунт
Для получения дополнительных статей, пожалуйста, обратите внимание на общедоступный номер: Binary Road