有没有办法检查特定的 jdk(Oracle 或 OpenJDK)是否支持 Java Flight Recorder?我一直在尝试在OPEN JDK 8上运行我的应用程序,如下所示
java -XX:StartFlightRecording
但这对OPEN JDK 8
. 我收到以下错误Unrecognized VM option -XX:+UnlockCommercialFeatures
但不起作用
您需要按照此处所述“解锁商业功能”:
https ://docs.oracle.com/javacomponents/jmc-5-4/jfr-runtime-guide/run.htm#JFRUH176
该命令应如下所示:
java -XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:StartFlightRecording=duration=60s,filename=myrecording.jfr MyApp
检查 JVM 是否支持 JFR 的一种方法是:
$ jdb
打开第二个外壳。
$ jcmd
记住 jdb 进程的 pid 并执行以下操作:
$ jcmd <pid> help
如果 JVM 列出以 JFR 开头的诊断命令,则支持。如果 JDK 缺少 jcmd,则不支持 JFR(除非它是 JRockit JVM,在这种情况下 jcmd 被称为 jrcmd 并且要查找的命令是 start_flightrecording)。