PS MarkSweep - это сборщик мусора

моя версия jdk:

java version "1.8.0_102"

Java(TM) SE Runtime Environment (build 1.8.0_102-b14)

Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)

Это мой тестовый код :

List<GarbageCollectorMXBean> beans = ManagementFactory.getGarbageCollectorMXBeans();

    for (GarbageCollectorMXBean bean : beans) {
        System.out.println(bean.getName());
    }

результат :

PS Scavenge

PS MarkSweep

Я знаю, что PS Scavenge-это "параллельный мусор" сборщика мусора молодого поколения, "PS MarkSweep" - это который, это "параллельный старый"?

1 ответов


в интересах тех, кто еще находит этот вопрос, здесь есть отличный обзор:

http://www.fasterj.com/articles/oraclecollectors1.shtml

процитировать соответствующие части для этого вопроса:

коллекционеры молодого поколения

копировать (включено с-XX:+UseSerialGC)
коллектор последовательных копий использует один поток для копирования уцелевших объектов из Eden в уцелевшие пространства и между пространствами выживших, пока он не решит, что они там уже давно. достаточно, и в этот момент он копирует их в старое поколение.

PS Scavenge (включено с-XX:+UseParallelGC)
параллельный сборщик мусора, как и сборщик копий, но использует несколько потоков параллельно и имеет некоторые знания о том, как старое поколение собранный (по существу написанный для работы с серийным и PS old gen коллекционеры.)

ParNew (включено с-XX:+UseParNewGC)
коллектор параллельного копирования, как и коллектор копирования, но использует несколько потоков в параллельный и имеет внутренний "обратный вызов", который позволяет старому поколению коллектор для работы с объектами, которые он собирает (действительно написан работа с параллельным коллектором).

G1 молодое поколение (включено с-XX:+UseG1GC)
сборщик мусора первый, использует "мусор первый" алгоритм, разделяющий куча на множество меньших пространств, но они все еще разделены в Эдем и выжившие пространства в молодом поколении для G1.

коллекционеры старого поколения

MarkSweepCompact (включено с-XX:+UseSerialGC)
серийный сборник метк-стреловидности, папа их всех, использует серийное (одно поток) полный алгоритм сбора мусора метк-стреловидности, с опционным уплотнение.

PS MarkSweep (включено с-XX:+UseParallelOldGC)
параллельный сборник метк-стреловидности scavenge, распараллеленная версия (т. е. пользы несколько потоков) MarkSweepCompact.

ConcurrentMarkSweep (включено с-XX:+UseConcMarkSweepGC)
параллельный коллектор, алгоритм сборки мусора, который пытается выполните большую часть работы по сбору мусора в фоновом режиме без остановка потоков приложений во время он работает (есть еще фазы где он должен остановить потоки приложений, но эти фазы старался быть сведенным к минимуму). Если параллельный сборщик не удается идти в ногу с мусором, он переходит к последовательному Коллектор MarkSweepCompact для (только) следующего GC.

смешанное поколение G1 (включено с-XX:+UseG1GC)
первый сборщик мусора использует алгоритм "мусор первый", который разбивается куча на много меньше пространства.