2017-08-29 5 views
0

1、私はJIT中にホットスポットでクラスやメソッドをコンパイルするのにどれくらいの時間を費やしたのかを知りたい(タイムアウトの問題があり、コンパイル時間が長いと思われる)この時間をトレースするためのトレースフラグや他の方法はありますか?ホットスポットのクラスやメソッドをコンパイルするのにどれだけの時間を費やすのか?

2、メソッドが初めて実行された場合、コンパイルプロセスが全くないため、コンパイル時間は0になります。

答えて

2

JVMフラグ:アプリケーションの実行中に

  • JITコンパイラがバックグラウンドで動作することを-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出力がインターリーブされたように見えることがあります。
  • メソッドは、異なるレベルの最適化で複数回(再)コンパイルすることができます。
+0

我々だけでアプリケーションを起動\展開した後、我々は大規模なクライアントの要求が同時に存在する場合に、クライアントに多くのタイムアウトエラーを得た問題を得たので、私たちはその問題は多分長い時間クラスのロードや方法によって引き起こされると仮定コンパイル、私はこのトラブルシューティングの方向が正しいかどうか分かりません、あなたは親切にいくつかの提案をすることはできますか? –

+0

ところで、コンパイル中のメソッドは、そのメソッドへの要求がブロックされる場合は?コンパイルが完了したらコンパイルされたバージョンに切り替えますか? –

+0

@Jasonコンパイルはメソッドの実行をブロックしません。メソッドが解釈されている間、バックグラウンドで実行されます。 – apangin

0

jitwatchは、jitコンパイルログを記録して表示できます。

jitwatch screenshot with log

+0

情報を提供していただきありがとうございます。しかし、Prod環境でトラブルシューティングを行う必要がありますが、jitwatchが大きなパフォーマンスに影響するかどうかはわかりません。 –

関連する問題