Java - ГК сборщик мусора Подробное (б)

CMS коллектор

CMS коллектор (ConcurrentMarkSweep: одновременно знак снят) представляет собой набор пауза в течение кратчайшего времени цели коллектора.

Подходит для использования на сервере интернет - сайта или системы B / S, с особым акцентом на скорость реакции таких серверов приложений, чтобы система в кратчайшие сроки паузы.

CMS идеально подходит для большой динамической памяти, числа ядер CPU и более серверных приложений, но и первого выбора для коллекторов G1 появится до крупномасштабных приложений.

Параллельное Марк стреловидность одновременно знак ясно, одновременно низкая собираемость паузы, параллелизм относится к выполнению с пользовательским потоком

Параметры виртуальной машины Java с открытым коллектором: -XX: + UseConcMarkSreepGC, этот параметр включается автоматически после -XX: + UseParNewGC открыт.

После открытия этого параметра, используйте ParNew (Young-зону) + CMS (Старая-зону) + SerialOld сочетание коллектора, ошибку SerialOld в качестве резервного CMS коллектора.

Когда CMS был не в состоянии собрать мусор (чрезмерной фрагментации памяти) будет использовать SerialOld FullGc.

CMS провела четыре шага ГХ:

  1. Начальная метка (CMS начальная метка): просто знак того, что объекты могут быть непосредственно связаны с GC Roots , очень быстро, по- прежнему необходимо приостановить все работы темы
  2. Одновременно с отметкой (CMS одновременно марка) и пользовательскими нитями: процесс GC Корней отслеживания и потоками пользовательских работать вместе, без пауз рабочих потоков . Основной знак , конечно, отметить все объекты
  3. Переименовано (CMS замечание): Для того, чтобы изменить параллельную маркировку периода, в связи с пользователем программа продолжает работать и в результате отмеченной записи , что часть объекта от изменения метки, все еще нужна приостановить все работы тему . С параллельной меткой, поток пользователей все еще работает, так что до официальной очистки, то коррекции.
  4. Параллельный Clear (CMS одновременно стреловидность) и пользовательские потоки вместе: Clear GC Roots недостижимые объекты и пользовательские потоки работать вместе, без остановки рабочих потоков . Основываясь на результатах классификации, прямая очистка объекта.

В качестве самой длинной метки и одновременного параллельного процесса очистки, сбора мусора и нити пользователь может совместно работать одновременно, так что общее восстановление памяти и пользовательских нитей CMS коллектора вместе одновременно.

CMS ГХ четырех шагов фотографий

CMS преимущества: низкая пауза одновременно коллекция

CMS Недостатки:

  1. Параллельное выполнение, давление на ресурсах ЦП: В связи одновременно, CMS в потоках сбора и применения , в то же время будет увеличиваться занять динамическую память, то есть сказать, CMS должна быть завершена до памяти кучи старого сборщика мусора исчерпана, или CMS когда восстановление не удается, она будет срабатывать механизм защиты, воля старого серийного коллекционного на
    STW пути последнего GC, что приводит к большему времени пребывания.

  2. Четкие алгоритмы маркировки не могут организовать космический мусор, старое s пространство будет долго, как приложение постепенно истощается, и, наконец, в динамическую память сжимается с помощью механизма безопасности. CMS также предоставляет параметры -XXlCMSFullGCsBeForeCompaction (по умолчанию 0, который выполняется каждый консолидации памяти времени), чтобы указать, сколько раз после сбора CMS, после сжатия Full GC.

Как выбрать сборщик мусора

  • Малые один процессор или память, автономные программы
    -XX: + UseSerialGC
  • Мульти ЦП, требует максимальной пропускной способности рассчитываются в качестве фоновых приложений
    -XX: + UseParallelGC или
    -XX: + UseParallelOlGC
  • 多CPU,追求低停顿时间,需快速响应如互联网应用
    -XX:+UseConcMarkSweepGC
    -XX:+ParNewGC
参数 新生代垃圾收集器 新生代算法 老年代垃圾收集器 老年代算法
-XX:+UseSerialGc SerialGc 复制 SerialOldGc 标整
-XX:+UseParNewGc ParNew 复制 SerialOldGc 标整
-XX:+UseParallelGc/-XX:+UseParallelOldGc Parallel[Scavenge] 复制 ParallelOld 标整
-XX:+UseConcMarkSweepGc ParNew 复制 CMS+SerialOld的收集器组合(SerialOld作为CMS出错的后备收集器) 标清
-XX:+UseG1GC G1整体采用标记-整理算法 局部是通过复制算法,不会产生内存碎片

рекомендация

отwww.cnblogs.com/cjunn/p/12233441.html