2012-02-13 24 views
1

我安裝fastdebug build of JDK 6,並運行此命令:使用-XX:+ PrintCFGToFile jvm選項在哪裏生成output.cfg文件?

java -XX:+PrintCFGToFile Test

但打印信息沒有文件發現......我試圖在Linux和Windows操作系統,沒有任何成功。放棄後,我從源(OpenJDK 7 sources,Ubuntu)構建JDK,但沒有成功,再次相同,它打印"VM option '+PrintCFGToFile'",但沒有在執行類的目錄中創建的文件,也沒有在JDK bin目錄中...我尋找「輸出。 cfg「,沒有發現...我檢查了源代碼,似乎該文件確實有名稱」output.cfg「(如果我沒有錯,它是CFGPrinter)

有什麼問題?是否應該指定其他選項?控制流圖信息如何以及在何處獲取此文件?

回答

1

好,非常感謝OpenJDK的郵件列表,特別是克里斯塔爾莫誰unswered我的這個問題,而不是在這裏沒有答案離開了這個問題,並與社區分享:

有在熱點2個即時編譯器:
1)C1 aka客戶端JIT
2)C2 aka服務器JIT
因爲我使用Ubuntu,HotSpot使用C2編譯器,而PrintCFGToFile僅適用於C1。

你可能想打開-XX:+ TieredCompilation如果你真的想看到這個標誌的工作,對你當前平臺

是一個建議,因此該解決方案是:

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

運行它,我得到帶班執行文件夾中的文件output.cfg(預期)

original answer (and thread)

0

關於C1/C2是對的。而 只有編寫的方法JIT可以產生CFG,-XX:+PrintCompilation選擇可以報告哪個方法被編譯。