2

我即将开始使用Java Mission Control 5.3.0

我已将-XX:+UnlockCommercialFeatures -XX:+FlightRecorder 添加到我的网络应用程序的 jetty.template 中。

然后我用mvn jetty:run启动网络应用程序。

但是当我启动飞行记录器时,我遇到了如下弹出问题。

'Start Flight Recording.. (Last attempt failed)' have encountered a problem.Commercial features are not enabled. In JDK7u4 and above,the JVM must be started with -XX:+UnlockCommercialFeatures -XX:+FlightRecorder .

而且我还尝试将如下标志添加到pom.xml中,但它不起作用。

<jvmArgs>
    <jvmArg>-Xmx128m</jvmArg>
    <jvmArg>-Xms128m</jvmArg>
    <jvmArg>-XX:MaxPermSize=512m</jvmArg>
    <jvmArg>-XX:+UnlockCommercialFeatures</jvmArg>
    <jvmArg>-XX:+FlightRecorder</jvmArg>
    <jvmArg>-XX:StartFlightRecording=duration=160s,delay=20s,settings=profile,filename=target/recording.jfr</jvmArg>
</jvmArgs>

我应该怎么做才能在我的网络应用上启用飞行记录器?

4

4 回答 4

1

我通过使用下面得到了答案。

export MAVEN_OPTS="$MAVEN_OPTS -XX:+UnlockCommercialFeatures -XX:+FlightRecorder"
于 2014-08-27T09:37:46.493 回答
1

该配置应该添加到 Jetty 的运行虚拟机中,所以我会试试这个:

mvn jetty:run -XX:+UnlockCommercialFeatures -XX:+FlightRecorder

我无法对此进行测试,并且我在 Tomcat 上工作最多,但我认为这可以帮助您

于 2014-08-27T06:10:15.600 回答
1

如果您使用jcmd来自 jdk 的命令,则可以通过以下方式启用 JFR:

jcmd 31118 VM.unlock_commercial_features

然后使用 JFR。

例如

jcmd 31118 JFR.start name=a

于 2016-02-25T06:11:21.987 回答
0

经过一些测试,我将添加一些可以帮助其他人的东西:

这是我用于测试的 JVM(Azul Zulu):

openjdk version "1.8.0_272"
OpenJDK Runtime Environment (Zulu 8.50.0.21-CA-linux64) (build 1.8.0_272-b17)
OpenJDK 64-Bit Server VM (Zulu 8.50.0.21-CA-linux64) (build 25.272-b17, mixed mode)

我在项目顶部创建了一个文件:

.mvn/jvm.config

仅包含一条指令:

-XX:StartFlightRecording=filename=build.jfr

然后,做任何你想做的 mvn 目标并寻找你想要的 build.jfr 命令。

Zulu 的 JVM 默认启用了飞行记录,让您少担心一步。

值得一提的是,就我而言,我的机器上安装了几个 JVM,并且 mvn 命令使用 JAVA_HOME 变量,因此请确保它指向正确的 jvm。

于 2020-10-27T15:10:08.747 回答