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

Что я должен измерить при выборе сборщика мусора?

В моем случае я пытаюсь сравнить производительность сборщика пропускной способности с G1GC, не совсем уверен, на что мне следует обратить внимание, прежде чем принять окончательное решение. Я знаю, что посмотреть, сколько времени тратит сборщик мусора, звучит неплохо, но это может или может не влиять на производительность моего приложения. (К вашему сведению — переход с Java 8 на Java 11)


person Sagar    schedule 01.04.2019    source источник


Ответы (1)


Различные GC в JVM предназначены для разных вариантов использования:

  1. Пропускная способность - Параллельный
  2. Задержка — CMS
  3. Предсказуемость - G1, ZGC

Как только вы узнаете, какой из этих вариантов использования вы ищете, вы можете выбрать соответствующую метрику, например. нет смысла измерять среднее время паузы для пропускного коллектора, лучше смотреть на общее время сбора.

Сравнивать Parallel collection с G1 не имеет смысла, они предназначены для другого варианта использования. Если вам нужно быстро обрабатывать пакеты данных, используйте Parallel. Если у вас есть приложение, которое должно реагировать во время рабочей нагрузки, используйте G1.

person Karol Dowbecki    schedule 01.04.2019
comment
Какое место CMS занимает в приведенном выше списке? - person Sagar; 01.04.2019
comment
CMS ориентирована на задержку, но менее предсказуема, чем G1. G1 оптимизирован для Java 11 и должен иметь задержку в наихудшем случае, аналогичную CMS, но также имеет более постоянное время паузы и его легче настраивать. Обычно лучше получить немного меньшую, но постоянную задержку, что избавляет от многих проблем с PROD. - person Karol Dowbecki; 01.04.2019
comment
Понимаю. Спасибо за ответ. Не могли бы вы подробнее рассказать о предсказуемости? Мы можем контролировать, как долго gc должен останавливать мир и сколько раз? - person Sagar; 01.04.2019
comment
Если вы знаете ожидаемое время паузы GC (скажем, до 100 мс), вы можете сказать, что SLA запроса будет в течение определенного времени (скажем, до 500 мс). Без предсказуемости паузы сборщика мусора вы можете получить 10-секундную паузу сборщика мусора, которая нарушит SLA для запроса. - person Karol Dowbecki; 01.04.2019
comment
Метрика не всегда так проста. Например, дедупликация строк работает только со сборщиком G1 и может косвенно влиять на производительность, в результате чего пропускная способность выше, чем при использовании Parallel. Конечно, это зависит от конкретного приложения и его строк. - person Holger; 02.04.2019