Преимущественно конкурентные сборщики мусора в Java VM

Преимущественно конкурентные сборщики выполняют часть их работы конкурентно с приложением, отсюда и их название. Java HotSpot VM включает в себя два преимущественно конкурентных сборщика:

  • Сборщик Concurrent Mark Sweep (CMS): этот сборщик предназначен для приложений, которые предпочитают более короткие паузы сбора мусора и могут позволить себе совместно использовать ресурсы процессора со сборщиком мусора.
  • Сборщик мусора Garbage-First (G1): этот сборщик серверного типа предназначен для многопроцессорных машин с большим объемом памяти. Он с высокой вероятностью отвечает целям времени сбора мусора и высокой пропускной способности.

Накладные расходы преимущественно конкурентных сборщиков

Преимущественно конкурентный сборщик поглощает ресурсы процессора (которые в противном случае были бы доступны приложению) в обмен на более короткое время основной паузы сбора.

Наиболее заметные накладные расходы - это использование одного или нескольких процессоров во время конкурентных частей сбора. В N-процессорной системе конкурентная часть коллекции использует
K / N доступных процессоров, где 1 <= K <= потолок{N/4}. В дополнение к использованию процессоров во время конкурентных фаз, дополнительные издержки возникают для обеспечения конкурентности. Таким образом, хотя паузы при сборке мусора обычно намного короче с конкуретным сборщиком, пропускная способность приложения также имеет тенденцию быть немного ниже, чем с другими сборщиками.

На машине с более чем одним ядром обработки процессоры доступны для потоков приложений во время конкурентной части сбора, поэтому конкурентный поток сборщика мусора не приостанавливает работу приложения. Обычно это приводит к более коротким паузам, но опять-таки приложению доступно меньше ресурсов процессора, и следует ожидать некоторого замедления, особенно если приложение максимально использует все ядра обработки. По мере увеличения N уменьшение ресурсов процессора из-за конкурентного сбора мусора становится меньше, а преимущество от конкурентного сбора мусора увеличивается.

Поскольку по крайней мере один процессор используется для сборки мусора во время конкурентных фаз, конкурентные сборщики обычно не дают никаких преимуществ на однопроцессорной (одноядерной) машине.


Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки