Аналогичный вопрос был задан здесь .
Я профилирую приложение Open JDK 11.0.2, используя JMC 7.1.0, которое я построил в соответствии с инструкциями .
Приложение использует около 3 ядер, нет избыточного gc, и только небольшая часть потоков времени выполняет вызовы собственных методов, которые фактически используют ЦП.
Я использую интервал выборки по умолчанию, равный 10 мс.
Я включил метаданные отладки за пределы безопасных точек, используя:
-XX: + UnlockDiagnosticVMOptions -XX: + DebugNonSafepoints
Количество взятых образцов намного меньше, чем я ожидаю.
Если предположить, что в потоке ЦП 1 выполняется неродной код в каждой точке выборки, то можно ожидать 100 выборок в секунду. Все же я вижу только 1 образец / секунду.
Сам аппарат обычно на 50% простаивает, поэтому поток пробоотбора не голодает.
Что может быть причиной того, что количество образцов будет таким низким?