Вопрос с собеседования · Java

Что показывают метрики allocation rate и promotion rate?

MiddleJVM и сборка мусора
Коротко

Allocation rate — сколько МБ/с приложение создаёт объектов: чем выше, тем чаще minor GC. Promotion rate — сколько МБ/с переезжает в старое поколение: чем выше, тем чаще old/full GC.

  • Высокий allocation rate лечат кодом: меньше временных объектов, без лишней упаковки
  • Высокий promotion rate — объекты живут дольше одной-двух сборок или мал Survivor
  • Снимают из GC-логов (-Xlog:gc*), JFR, Micrometer

А ещё Сотни МБ/с — норма для нагруженного сервиса; важна динамика и связь с паузами

Попробуйте сами

GC: Eden, Survivor и продвижение

Подробно

Allocation rate. Eden заполняется со скоростью аллокаций; заполнился — minor GC. Удвоили аллокации — удвоили частоту молодых сборок. Источники: промежуточные коллекции в стримах, упаковка Integer, конкатенация строк в цикле, лишние DTO, логирование с формированием строк при выключенном уровне.

Promotion rate. Объекты, пережившие несколько молодых сборок (порог tenuring), уезжают в старое поколение. Если туда едет много «среднеживущего» — кэшей, буферов запросов, сессий, — старое поколение быстро заполняется и требует дорогих сборок. Признак premature promotion: высокий promotion rate при том, что объекты вскоре умирают.

Где смотреть: GC-логи и анализаторы (GCeasy, GCViewer), JFR (события выделения с профилем — какой код аллоцирует), метрики jvm.gc.memory.allocated и jvm.gc.memory.promoted в Micrometer.

Анализ всегда в связке: частота и длительность пауз, обе метрики, живой набор после full GC.

Что хотят услышать

  • Определение и связь каждой метрики с видом сборок.
  • Как снизить каждую.
  • Где измерить.

Частые ошибки

  • Путать allocation rate с размером кучи.
  • Лечить высокий allocation rate только флагами.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓allocation rate — скорость создания объектов; promotion rate — скорость переезда в old
  • ✗allocation rate — частота full GC, а promotion rate — частота minor GC
  • ✗Это размеры -Xms и -Xmx соответственно
  • ✗Оба показывают только длительность пауз stop-the-world

Что спросят дальше

  • Как высокий allocation rate связан с паузами?
  • Где взять эти метрики в проде?

Разбор темы

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования