我安装了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)
怎么了?是否应指定任何其他选项?如何以及在何处获取具有控制流图信息的文件?
答案 0 :(得分:1)
HotSpot中有两个JIT:
1)C1又称客户JIT
2)C2又称服务器JIT
由于我使用的是Ubuntu,HotSpot使用C2编译器,而PrintCFGToFile仅应用于C1。
你可能想打开-XX:+ TieredCompilation,如果你真的想在你当前的平台上看到这个标志正常工作
是一个建议,所以解决方案是:
java -XX:+PrintCFGToFile -XX:+TieredCompilation Test
运行它我在输出类的文件夹中得到output.cfg文件(如预期的那样)
答案 1 :(得分:0)
关于C1 / C2是对的。和
只有 JIT 编译的方法才能生成 CFG ,-XX:+PrintCompilation
选项可以报告编译哪种方法。