OpenJDK 11是否支持Java Flight Recorder?

3

根据这篇文章

jfr在openjdk 11中得到了本地支持

并且OpenJDK 11的特性列表也证实了这一点:

328:Flight Recorder

然而,从这篇DZone文章中可以看出,使用与JFR相关的选项-XX:+UnlockCommercialFeatures

OpenJDK无法识别此选项

当我尝试使用Gradle时,例如:./gradlew clean -Dorg.gradle.jvmargs="-XX:+UnlockCommercialFeatures",我会得到以下结果:

处理命令行:C:\Program Files\AdoptOpenJDK\jdk-11.0.11.9-hotspot\bin\java.exe -XX:+UnlockCommercialFeatures (...)

未被识别的VM选项“UnlockCommercialFeatures”

我错过了什么?

1个回答

8

JFR曾是Oracle Java 1.8及之前版本的商业功能,需要特别启用(使用-XX:+UnlockCommercialFeatures)。

从Java 11开始,它不再是商业功能,因此您不需要使用该标志。

实际上,链接的文章说明:

JFR包装差异
在使用-XX:+UnlockCommercialFeatures选项时,Oracle JDK 11会发出警告,而OpenJDK不识别此选项并报告错误。

作者展示的下面的示例没有使用-XX:+UnlockCommercialFeatures


没有更多的错误了,谢谢。顺便问一下:我运行 ./gradlew -Dorg.gradle.jvmargs="-XX:+FlightRecorder -XX:StartFlightRecording=duration=30s,filename=my_recording.jfr -XX:FlightRecorderOptions=stackdepth=256" clean,但是没有创建 .jfr 文件,可能是什么原因? - ThCollignon
1
@Coli,我认为已经创建了 - 它只是不在你正在寻找的地方。当启动gradle时,FlightRecorder-Option适用于gradle守护程序,而gradle守护程序的工作目录位于某个位置,例如 ~/.gradle/daemon/<gradleversion> - Thomas Kläger
找到了,谢谢。 - ThCollignon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接