有没有办法检查特定的jdk(Oracle或OpenJDK)是否支持Java Flight Recorder?

时间:2020-04-20 23:05:05

标签: java oracle jfr

是否可以检查特定的jdk(Oracle或OpenJDK)是否支持Java Flight Recorder? 我一直试图在 OPEN JDK 8 上按以下方式运行我的应用程序

java -XX:StartFlightRecording

但这不适用于OPEN JDK 8。我收到以下错误无法识别的VM选项-XX:+ UnlockCommercialFeatures

但不起作用

2 个答案:

答案 0 :(得分:0)

您需要按此处所述“解锁商业功能”:
https://docs.oracle.com/javacomponents/jmc-5-4/jfr-runtime-guide/run.htm#JFRUH176

命令应如下所示:

#include <iostream>

using namespace std;

int main() {

    char gun;
    char att;

    cout << "Guns" << endl;

    cout << "[1]    AK" << endl;
    cout << "[2]    MP5" << endl;
    cout << "[3]    M2" << endl;
    cout << "[4]    SAR" << endl;
    cout << "[5]    Tommy" << endl;
    cout << "[6]    Custom" << endl;
    cin >> gun;

    cout << "[A]    Holosight" << endl;
    cout << "[B]    Simplesight" << endl;
    cout << "[C]    Silencer" << endl;
    cout << "[D]    Muzzel Boost" << endl;
    cout << "[E]    Muzzel Break" << endl;
    cout << "[F]    8x Zoom Scope" << endl;
    cout << "[G]    16x Zoom Scope" << endl;
    cout << "[H]    Lasersight" << endl;
    cin >> att;

    switch (gun) {

    case'1':
        if (gun = 1)
            cout << 'test' << endl;
        else
            cout << "Wrong Command" << endl;
        break;
    }

}

答案 1 :(得分:0)

一种检查JVM是否支持JFR的方法是:

$ jdb

打开第二个外壳。

$ jcmd

记住jdb进程的pid并执行以下操作:

$ jcmd <pid> help

如果JVM列出以JFR开头的诊断命令,则支持它。如果JDK缺少jcmd,则不支持JFR(除非它是JRockit JVM,在这种情况下,jcmd称为jrcmd,要查找的命令是start_flightrecording)。