Проверка Java-приложения, которое было запущено с -javaagent с использованием VisualVM

Я пытаюсь проверить приложение Java с помощью VisualVM. Обычно проблем нет, но я пытаюсь настроить переплетение Eclipselink и запускаю программу, используя флаг -javaagent;

-Xms1024m -Xmx1582m -Xshare:off  -javaagent:C:\Users\Administrator\.m2\repository\org\eclipse\persistence\eclipselink\2.3.0-M7\eclipselink-2.3.0-M7.jar

Когда я смотрю на программу, использующую Viusal VM, я ничего не вижу на странице Monitor.

К сожалению, сайт документации VisualVM (на visualvm.java.net), кажется, не работает.

Спасибо всем, кто может помочь мне понять, что я делаю неправильно.

1 ответ

Решение

Благодаря Томасу Хурке из Oracle я могу ответить на этот вопрос.

Проблема вызвана тайм-аутом между обнаружением jvm и его инициализацией jvmstat (http://java.sun.com/performance/jvmstat/). При включенном ткачестве этот интервал явно увеличивается.

Есть 2 способа это исправить.

1) вы можете явно включить JMX в контролируемом приложении на предопределенном порту с помощью

-Dcom.sun.management.jmxremote.port=<portNum>
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false

и из VisualVM присоедините к вашему приложению через File->Add JMX connection и используйте "localhost:" в качестве строки подключения.

2) Вы можете увеличить время ожидания;

a) В каталоге visualvm /etc (например, visualvm_132\etc) отредактируйте параметр defaults_opts в visualvm.conf так, чтобы при необходимости увеличивать -J-Dsun.jvmstat.perdata.syncWaitMs=10000 (я увеличил его *10 до 100 секунд)

VisualVM также имеет файл журнала, доступный через Справка-> О программе-> Файл журнала, который показывает любые исключения, которые были выброшены. Здесь я нашел след стека тайм-аута...

INFO [com.sun.tools.visualvm.jvmstat.JvmstatModelProvider]: Could not get MonitoredVM
sun.jvmstat.monitor.MonitorException: Could not synchronize with target
   at sun.jvmstat.perfdata.monitor.v2_0.PerfDataBuffer.synchWithTarget(PerfDataBuffer.java:262)

Еще раз спасибо Томасу. Он должен получить какие-либо очки от этого

Другие вопросы по тегам