2016-12-09 5 views
1

Я пытаюсь создать систему, которая периодически обрабатывает дампы потоков в процессах JVM, чтобы их можно было анализировать позже в случае возникновения проблем. Я намерен вызывать минимальные накладные расходы для JVM, принимая при этом отвалы резьбы. Существует несколько способов получения дампов потоков, и я, наконец, кратко изложил 2 варианта: либо создать пользовательский агент JVMTI, либо использовать ThreadMXBean. Мне было интересно, кто-то проделал анализ того, какой подход приведет к наименьшему издержкам JVM? Или они вызывают одни и те же накладные расходы?Выполнение периодических дампов потоков на JVM - ThreadMXBean vs JVMTI agent

+0

'ThreadMXBean' - самый худший способ получить дампы потоков. Он создает представление стека на уровне Java, поэтому он медленный и создает много мусора в куче. JVMTI - лучший способ. Однако еще лучше попросить JVM сделать трассировку стека для вас (см. Связанный ответ). – apangin

+0

Спасибо, что связали вопрос. Просить JVM означает waitibg для безопасной точки, что в моем (профилировании) случае использования не требуется. Я действительно начал смотреть на использование перфомансов или DTrace. – Aniket

+0

Если основной целью трассировки стека является профилирование ЦП, вы можете перефразировать вопрос. В нынешней форме вопрос действительно уже дан. – apangin

ответ

1

Зависит от желаемой частоты выборки, но в большинстве случаев это будет иметь некоторый эффект, и результаты будут предвзятыми. Если вы за JVMTI, определенно посмотрите на честный профайлер: https://github.com/RichardWarburton/honest-profiler

+0

Спасибо. Полезно знать о безопасных точках и AsyncGetCallTrace. Это будет очень полезно для моих исследований. – Aniket

+0

'AsyncGetCallTrace' хорош для профилирования. Однако он не создает дампы потоков. То есть 'AsyncGetCallTrace' может получить приятный след ** активного ** потока, но он не даст изображения всех потоков. – apangin

+0

Согласовано. Мой вариант использования в основном предназначен для профилирования, а не для просмотра того, что все потоки делают в определенный момент. – Aniket

Смежные вопросы