使用-XX:+;生成output.cfg文件的PrintCFGToFile jvm选项?
我安装并运行了以下命令:使用-XX:+;生成output.cfg文件的PrintCFGToFile jvm选项?,jvm,jvm-hotspot,control-flow,jvm-arguments,Jvm,Jvm Hotspot,Control Flow,Jvm Arguments,我安装并运行了以下命令: java-XX:+printcfgtofiletest 但找不到包含打印信息的文件。。。我在Linux和Windows操作系统上都试过了,但没有成功。放弃后,我从源代码(,Ubuntu)构建了JDK,但没有成功,同样,它打印“VM选项”+PrintCFGToFile”,但没有在执行类的目录中创建文件,也没有在JDK bin目录中创建文件。。。我在文件系统上查找“output.cfg”,没有找到任何东西。。。我检查了源代码,似乎该文件的名称真的是“output.cfg”(
java-XX:+printcfgtofiletest
但找不到包含打印信息的文件。。。我在Linux和Windows操作系统上都试过了,但没有成功。放弃后,我从源代码(,Ubuntu)构建了JDK,但没有成功,同样,它打印“VM选项”+PrintCFGToFile”
,但没有在执行类的目录中创建文件,也没有在JDK bin目录中创建文件。。。我在文件系统上查找“output.cfg”,没有找到任何东西。。。我检查了源代码,似乎该文件的名称真的是“output.cfg”(如果我没弄错的话,它是CFGPrinter)
怎么了?是否应指定任何附加选项?如何以及从何处获取此文件的控制流图信息?非常感谢OpenJDK邮件列表,特别是感谢Krystal Mok没有回答我的这个问题,不要在这里留下这个问题的答案,并与社区共享: 热点中有两个JIT:
1) C1 aka客户端准时制
2) C2 aka服务器JIT
由于我使用Ubuntu,HotSpot使用C2编译器,PrintCFGToFile只应用于C1 如果您真的希望看到此标志在当前平台上工作,您可能需要启用-XX:+tieredcomployment 这是一个建议,因此解决方案是:
java-XX:+PrintCFGToFile-XX:+tieredcomilation测试
运行它,我会在文件夹中获得output.cfg文件,并执行类(如预期的那样)
非常感谢OpenJDK邮件列表,特别是感谢Krystal Mok,他没有回答我的这个问题,也没有留下这个问题的答案,并与社区分享: 热点中有两个JIT:
1) C1 aka客户端准时制
2) C2 aka服务器JIT
由于我使用Ubuntu,HotSpot使用C2编译器,PrintCFGToFile只应用于C1 如果您真的希望看到此标志在当前平台上工作,您可能需要启用-XX:+tieredcomployment 这是一个建议,因此解决方案是:
java-XX:+PrintCFGToFile-XX:+tieredcomilation测试
运行它,我会在文件夹中获得output.cfg文件,并执行类(如预期的那样)
关于C1/C2的说法是正确的。及
只有通过JIT编译的方法才能生成CFG,-XX:+printcomilation
option可以报告编译了哪个方法。关于C1/C2是正确的。及
只有通过JIT编译的方法才能生成CFG,-XX:+printcomilation
option可以报告编译的方法