我只是开始使用 Java Mission Control 5.3.0 。
我已将 -XX:+ UnlockCommercialFeatures -XX:+ FlightRecorder 添加到我的网络应用程序的jetty.template中。
然后我用 mvn jetty启动网络应用程序:运行。
但是当我开始飞行记录器时,我发现弹出的问题如下所示。
'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>
如何在我的网络应用中启用Flight Recorder?
答案 0 :(得分:1)
如果您使用jdk中的jcmd
命令,则可以通过以下方式启用JFR:
jcmd 31118 VM.unlock_commercial_features
然后使用JFR。
e.g
jcmd 31118 JFR.start name=a
答案 1 :(得分:0)
应该将这个配置添加到正在运行的Jetty VM中,所以我试试这个:
mvn jetty:run -XX:+UnlockCommercialFeatures -XX:+FlightRecorder
我无法测试这个,我在Tomcat上工作最多,但我认为这可以帮助你
答案 2 :(得分:0)
我在下面使用了答案。
export MAVEN_OPTS="$MAVEN_OPTS -XX:+UnlockCommercialFeatures -XX:+FlightRecorder"
答案 3 :(得分: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。