Различие между-XX:UseParallelGC и-XX: + UseParNewGC

Они - алгоритмы для молодой сборки "мусора" поколения.

Второй (UseParNewGC) активируется автоматически с параллельной штатной сборкой "мусора" поколения (см. Параллельный Java и Параллель GC), но, есть ли различие между двумя параллельными алгоритмами?

80
задан Community 23 May 2017 в 11:47
поделиться

2 ответа

После многих поисков, лучшее объяснение, которое я нашел, это из веб-сайта настройки производительности Java в Вопрос о месяце: 1.4.1 Алгоритмы сбора мусора, 29 января 2003 г.

Алгоритмы сборки мусора молодого поколения

Коллектор (оригинал) копирование (включено по умолчанию). Когда этот коллекционер начинается, все потоки приложений останавливаются, а коллекция копирования продолжается с использованием одного потока (что означает только один CPU, даже если на мульти-процессоре). Это известен как коллекция Stop-World, поскольку в основном JVM делает пауза все остальное, пока коллекция не будет завершена.

Параллельный сборщик (включен с использованием -xx: + useparnewgc). Как и оригинальный копирующий коллектор, это коллектор Stop-World. Однако этот коллектор параллелирует коллекцию копирования над несколькими потоками, что более эффективно, чем оригинальный коллектор для копирования одного потока для Multi-CPU (хотя и для машин с одним процессором). Этот алгоритм потенциально ускоряет коллекцию молодого поколения в соответствии с коэффициентом количества доступных процессоров, по сравнению с исходным коллектором копирования в одиночку резьба.

Параллельный коллектор Parallel Collector (включен с использованием -xx: useparallelgc). Это похоже на предыдущий параллельный сборщик копирования, но алгоритм настроен для кучей гигабайт (более 10 ГБ) на машинах Multi-CPU. Этот алгоритм сбора предназначен для максимизации пропускной способности при минимизации пауз. Он имеет дополнительную адаптивную политику настройки, которая автоматически изменит размер пробелов кучи. Если вы используете этот коллектор, вы можете использовать оригинальный коллектор для Smooth Mark в старом генерировании (I.E. Совместевая старинная генерация одновременно не может работать с этим коллектором молодого поколения).

Из этой информации, кажется, главное отличие (кроме сотрудничества CMS) заключается в том, что UseParalleLGC поддерживает эргономика , в то время как UsperneWnewgc.

117
ответ дан 24 November 2019 в 09:55
поделиться

Да, это плохая практика.

В идеале, геттер не должен ничего менять или создавать (кроме ленивой загрузки, и даже тогда я думаю, что это приводит к менее четкому коду...). Таким образом вы минимизируете риск непреднамеренных побочных эффектов.

-121--1480656-

Ошибка в Microsoft Office.

URL-адреса с двумя последовательными косыми чертами разрешены RFC 2396 , но они не используются обычно. Как говорится в RFC (выписка из Приложения А):

abs_path      = "/"  path_segments
path_segments = segment *( "/" segment )
segment       = *pchar *( ";" param )

Обратите внимание, что сегмент определяется как содержащий символы ZERO ИЛИ БОЛЕЕ. (Вы можете утверждать, что это ошибка спецификации, и это не должно быть разрешено... но это так)

Как вы обнаружили, Microsoft Office исправит URL-адреса, содержащие двойные косые черты. Это, по-видимому, преднамеренная особенность «чистоты и последовательности». Нет пути переопределять или отключать его. Источник .

Таким образом, как предлагали другие люди, вам, вероятно, придется изменить способ форматирования URL-адресов сервером.

-121--4746441-

UseParNewGC обычно известен как «параллельный коллектор молодого поколения» во всех путях так же, как параллельный сборщик мусора (-XX: + UseParallelGC), за исключением того, что его более продуманный и эффективный. Также его можно использовать с «параллельным коллектором низкой паузы».

Для получения дополнительной информации см. Часто задаваемые вопросы по Java GC , вопрос 22.

Обратите внимание, что существуют некоторые известные ошибки с UseParNewGC

15
ответ дан 24 November 2019 в 09:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: