JVisualVM CPU Profiling для удаленной JVM
Когда я присоединяю JVisualVM к удаленной JVM через JMX, я вижу вкладку "Sampler" вместо вкладки "Profiler". Я знаю, что есть разница между сэмплированием и профилированием. Меня больше интересует профилирование (особенно CPU Profiling).
Доступен ли "Профилировщик" в JVisualVM для удаленной JVM? Если это так, пожалуйста, укажите конкретные флаги запуска JVM. Если это не доступно, каковы альтернативы? Пожалуйста, поймите, что я не могу войти на удаленные хосты.
1 ответ
VisualVM не поддерживает удаленное профилирование, как вы можете найти в его исходном коде:
boolean supportsProfiling(Application application) {
// Application already being profiled (Startup Profiler)
if (application == getProfiledApplication()) return true;
// Remote profiling is not supported
if (application.getHost() != Host.LOCALHOST) return false;
...
Фактически, выборка - это хорошая альтернатива интеллигентному профилировщику, если вы хотите найти узкие места, потребляющие процессор.
Какой инструмент лучше, зависит от ваших требований, но обсуждение инструмента выходит за рамки этого вопроса и не по теме переполнения стека.