【问题标题】:JMC Java Flight Recorder not enabledJMC Java Flight Recorder 未启用
【发布时间】:2019-03-12 07:40:16
【问题描述】:

我正在使用带有 java 任务控制插件的 spring 工具套件来启动我想使用 JFR 监控的应用程序。我将-XX:+UnlockCommercialFeatures -XX:+FlightRecorder 添加到SpringToolSuite4.ini 中,并在要监视的应用程序的运行配置> 参数> VM 参数中使用这两个标志(如果我理解正确,这两个标志都不需要)和-XX:+FlightRecorder 设置JAVA_OPTS。将这两个标志同时添加到运行配置时,应用程序无法使用 openJdk 启动。

在选择 Flight Recorder 时在 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)

或者使用 oracle 的 JDK

$ 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 一起存在。那是插件的一部分吗?

我怎样才能让它运行?

【问题讨论】:

    标签: eclipse jmc jfr


    【解决方案1】:

    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 解析记录

    【讨论】:

    • 谢谢。试图建造,但由于java.net.BindException: Address already in use: bind,码头没有启动。没有正在运行的服务器 - 关闭了所有其他应用程序。我在哪里可以配置端口?您的答案中的最后一个链接 (...package-summary.html) 不存在。
    • 不知道许可证,但您可以同时查看 Azul 的二进制文件 azul.com/products/zulu-mission-control。它们支持最新的文件格式等。
    • 对于端口:将<connector> <port>9999</port> </connector>添加到releng/third-party/pom.xml中jetty-maven-plugin的配置中,然后在releng/platform-definitions/platfoprm-definition-xyz.targetfiles中将端口从8080更改为9999(不是100%哪个被使用)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 2021-04-11
    • 2022-08-15
    • 2019-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多