2017-08-29 76 views
0

1,我想知道在JIT期間花費多少時間在熱點上編譯類或方法(我們遇到了一些超時問題,並且我們懷疑這可能是由於編譯時間過長造成的)?有沒有跟蹤標誌或其他方式來跟蹤這一次?如何知道在熱點中編譯類或方法花費了多少時間?

2,順便說一句,如果該方法第一次運行,那麼編譯時間將爲0,因爲完全沒有編譯過程,對嗎?

回答

2

JVM標誌:-XX:+PrintCompilation -XX:+UnlockDiagnosticVMOptions -XX:+PrintCompilation2

289 425  4  java.time.LocalDate::until (116 bytes) 
    292 360  3  java.time.ZoneId::of (85 bytes) made not entrant 
    293 426  4  java.time.LocalDate::from (68 bytes) 
    293 386  3  java.time.LocalDate::from (68 bytes) made not entrant 
    293 426 size: 248(96) time: 0 inlined: 54 bytes 
    297 425 size: 3688(2272) time: 8 inlined: 1092 bytes 
    ^^  ^   ^  ^
    | |   |    |   | 
    | |   compiled bytes |   bytecodes inlined 
    | compilation ID    method compilation time (ms) 
    timestamp (ms from JVM start) 

注意

  • JIT編譯器在應用程序運行時在後臺工作;這不可能導致延遲或超時。
  • 通常有多個編譯器線程; PrintCompilation輸出可能會出現交錯。
  • 一種方法可以用不同級別的優化(重新)編譯多次。
+0

我們得到了剛剛部署\啓動應用程序後,我們的客戶有許多超時錯誤時有大量的客戶端請求併發的問題,所以我們想,也許通過長時間類負載或方法造成的問題編譯,我不知道這個故障排除的方向是否正確,你能否提出一些建議? –

+0

順便說一句,當編譯的方法,如果該方法的請求將被阻止?或者它仍在執行解釋,編譯完成後切換到編譯版本? –

+0

@Jason編譯不會阻止執行的方法。它在後臺完成,而方法被解釋。 – apangin

0

jitwatch可以記錄和顯示jit編譯日誌。

jitwatch screenshot with log

+0

謝謝您提供的信息,但是我們需要在產品環境中進行故障排除,我不知道jitwatch是否會有很大的性能影響。 –

相關問題