Я запускаю приложение на JDK12 с параметром -Xlog: safepoint + stats = debug: file = safepoint.log vm, чтобы регистрировать действия безопасной точки и работать с ZGC. У меня есть проблема, чтобы понять вывод журнала:
[1408.417s][debug][safepoint,stats] vmop [ threads: total initially_running wait_to_block ][ time: spin block sync cleanup vmop ] page_trap_count
[1412.164s][debug][safepoint,stats] 1412.162: ZOperation [ 376 0 7 ][ 0 0 0 0 1 ] 7
[1413.164s][debug][safepoint,stats] 1413.164: None [ 376 0 0 ][ 0 0 0 0 0 ] 0
[1414.165s][debug][safepoint,stats] 1414.164: None [ 376 0 1 ][ 0 0 0 0 0 ] 1
Я понимаю первую строку, которая сообщает, что ZOperation занял 1 миллис, и 7 потоков внесли вклад в блокировку.
Я не понимаю вторую строку, что такое "Нет" операция vmop? Похоже, продолжительность этой операции равна 0. Это действительно 0 или 0, потому что это заняло менее 1 миллисекунды? Если да, можно установить более высокую степень детализации регистрации времени, чтобы узнать, сколько наносекунд потребовалось? или микросекунды?
У меня есть много операций "Нет", записанных в секунду. Я хотел бы знать, что делает JVM во время этой паузы. Я отслеживаю время ZGC и время SafePoint каждые 10 секунд, а суммарное время безопасной точки в 5 раз превышает суммарное время паузы gc. Я хотел бы как-то уменьшить это безопасное время для моего приложения.