JMC Java Flight Recorder не включен - PullRequest
1 голос
/ 12 марта 2019

Я использую набор инструментов Spring с плагином управления полетом Java, чтобы запустить приложение, которое я хотел бы отслеживать с помощью JFR.Я добавил -XX:+UnlockCommercialFeatures -XX:+FlightRecorder к SpringToolSuite4.ini и дополнительно установил JAVA_OPTS с этими двумя флагами (оба из которых не нужны, если я правильно понимаю) и -XX:+FlightRecorder в Конфигурации запуска> Аргументы> Параметры виртуальной машины приложения, которое нужно отслеживать.При добавлении обоих флагов в конфигурацию запуска приложение не может быть запущено с openJdk.

После запуска приложения в браузере JVM при выборе устройства записи полетов я получаю следующее исключение.

java.lang.RuntimeException: Flight Recorder features are not enabled. To enable this you need to use a Java 7u4 or later JVM started with -XX:+UnlockCommercialFeatures -XX:+FlightRecorder.
    at com.oracle.jmc.flightrecorder.controlpanel.ui.FlightRecorderProvider.refresh(FlightRecorderProvider.java:105)
    at com.oracle.jmc.browser.views.JVMBrowserView$1.run(JVMBrowserView.java:98)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
    at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
    at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: com.oracle.jmc.rjmx.services.jfr.FlightRecorderException: Flight Recorder features are not enabled. To enable this you need to use a Java 7u4 or later JVM started with -XX:+UnlockCommercialFeatures -XX:+FlightRecorder.
    at com.oracle.jmc.flightrecorder.controlpanel.ui.FlightRecorderProvider.getService(FlightRecorderProvider.java:161)
    at com.oracle.jmc.flightrecorder.controlpanel.ui.FlightRecorderProvider.refreshRecordings(FlightRecorderProvider.java:117)
    at com.oracle.jmc.flightrecorder.controlpanel.ui.FlightRecorderProvider.refresh(FlightRecorderProvider.java:94)
    ... 7 more

Я пробовал это в следующих версиях Java.

$ java -version
openjdk version "11.0.2" 2018-10-16
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.2+7)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.2+7, mixed mode)

или с JDK от Oracle

$ java -version
java version "11.0.2" 2019-01-15 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.2+9-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+9-LTS, mixed mode)

. Ни для одного из вышеупомянутых JDK не существует jmc.exe, которыйбыл там с java 8. Это часть плагина?

Как мне это запустить?

1 Ответ

0 голосов
/ 12 марта 2019

IIRC, Java 11 требует, чтобы JMC 7 мог запускать и просматривать записи. Ожидается, что сборки JMC 7 EA скоро появятся здесь - https://jdk.java.net/jmc/

В то же время вы можете собрать JMC самостоятельно, см. http://hg.openjdk.java.net/jmc/jmc7/ (или github, не совсем уверенный, с какой версией он синхронизируется - https://github.com/JDKMissionControl/jmc) и README о том, как собрать.

Вы можете начать запись, используя флаги командной строки JVM и jcmd, и анализировать записи, используя https://docs.oracle.com/en/java/javase/11/docs/api/jdk.jfr/jdk/jfr/consumer/package-summary.html

...