1,我想知道在JIT期間花費多少時間在熱點上編譯類或方法(我們遇到了一些超時問題,並且我們懷疑這可能是由於編譯時間過長造成的)?有沒有跟蹤標誌或其他方式來跟蹤這一次?如何知道在熱點中編譯類或方法花費了多少時間?
2,順便說一句,如果該方法第一次運行,那麼編譯時間將爲0,因爲完全沒有編譯過程,對嗎?
1,我想知道在JIT期間花費多少時間在熱點上編譯類或方法(我們遇到了一些超時問題,並且我們懷疑這可能是由於編譯時間過長造成的)?有沒有跟蹤標誌或其他方式來跟蹤這一次?如何知道在熱點中編譯類或方法花費了多少時間?
2,順便說一句,如果該方法第一次運行,那麼編譯時間將爲0,因爲完全沒有編譯過程,對嗎?
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)
注意
PrintCompilation
輸出可能會出現交錯。
我們得到了剛剛部署\啓動應用程序後,我們的客戶有許多超時錯誤時有大量的客戶端請求併發的問題,所以我們想,也許通過長時間類負載或方法造成的問題編譯,我不知道這個故障排除的方向是否正確,你能否提出一些建議? –
順便說一句,當編譯的方法,如果該方法的請求將被阻止?或者它仍在執行解釋,編譯完成後切換到編譯版本? –
@Jason編譯不會阻止執行的方法。它在後臺完成,而方法被解釋。 – apangin