Я не уверен, стоит ли публиковать это как ответ, потому что это мое понимание этого журнала, но оно кажется слишком большим для комментария.
Общее время события STW
было 0.500ms
, если вы смотрите глазами G1GC
, и не было ни 0.500ms
, ни 10ms
, если вы, например, взяли Shenandoah
. Когда вы используете G1GC
, STW event
обрабатывается как 0.500ms
, использование Shenandoah
приведет к 0.500ms + delta
; где это delta
будет кумулятивным временем, которое потребовалось, чтобы привести все java threads
к safepoint
(также называемому TTSP
- временем до безопасной точки) + любой очистки, необходимой для этого safepoint
. Может быть, картина сделает это проще:
|------|------------------------|---------|
| TTPS | G1 Evacuation Pause | CleanUp |
|------|------------------------|---------|
G1GC
обрабатывается как STW Event
G1 Evacuation Pause
регион только . Shenandoah
например, обрабатывает все это как событие STW
(все 3 региона). Кто прав? Я оставлю это на ваше усмотрение.
Вы можете включить гранулярность безопасной точки для G1GC
, например, через -Xlog:safepoint*
.
Инструменты, которые вы используете, имеют свое собственное "мнение" о том, как обрабатывать каждый раз, создаваемый журналами, я думаю; но это абсолютно не 10 ms
. Почему? Как вы уже видели (как вы говорите в комментариях), в журналах иногда бывает что-то подобное:
[9.090s][info][gc ] GC(25) Pause Young (Normal) (G1 Evacuation Pause) 77M->2M(128M) 0.500ms
[9.090s][info][gc,cpu ] GC(25) User=0.00s Sys=0.00s Real=**0.00s**
Обратите внимание на Real=0.00s
. Значит ли это, что нет паузы ? Конечно, нет, это просто означает, что на процессор не тратится время.