使用-XX:+ PrintCFGToFile jvm选项生成output.cfg文件?

时间:2012-02-13 15:45:12

标签: jvm jvm-hotspot control-flow jvm-arguments

我安装了fastdebug build of JDK 6,并运行了此命令:

java -XX:+PrintCFGToFile Test

但是找不到包含打印信息的文件......我在Linux和Windows操作系统上都尝试过它,没有任何成功。放弃后我从源代码(OpenJDK 7 sources,Ubuntu)构建了JDK,但没有成功,同样,它打印"VM option '+PrintCFGToFile'"但没有在执行类的目录中创建文件,也没有在JDK bin目录中创建文件。 ..我在文件系统上查找“output.cfg”,没有找到...我检查了源代码,似乎该文件确实有名称“output.cfg”(如果我没错,那就是CFGPrinter)

怎么了?是否应指定任何其他选项?如何以及在何处获取具有控制流图信息的文件?

2 个答案:

答案 0 :(得分:1)

好吧,非常感谢OpenJDK的邮件列表,特别是Krystal Mok,他没有解答我的这个问题,也没有在这里留下这个问题,并与社区分享:

HotSpot中有两个JIT:
1)C1又称客户JIT
2)C2又称服务器JIT
由于我使用的是Ubuntu,HotSpot使用C2编译器,而PrintCFGToFile仅应用于C1。

  

你可能想打开-XX:+ TieredCompilation,如果你真的想在你当前的平台上看到这个标志正常工作

是一个建议,所以解决方案是:

java -XX:+PrintCFGToFile -XX:+TieredCompilation Test

运行它我在输出类的文件夹中得到output.cfg文件(如预期的那样)

original answer (and thread)

答案 1 :(得分:0)

关于C1 / C2是对的。和 只有 JIT 编译的方法才能生成 CFG -XX:+PrintCompilation选项可以报告编译哪种方法。