JITWatchはJITコンパイルを可視化し分析するためのツールなのですが、これは2014年にこのブログにも書きました。
Twitterでこのツイートを見て、新機能を知りました。
New #JITWatch visualisations! See compiler thread queues, timings, bytecode and nmethod sizes. #HotSpot #Java #JVM pic.twitter.com/kCeIbWnhHa
— Chris Newland (@chriswhocodes) 2017年12月9日
新機能を見てみます。サンプルのログは、JITWatchに付属しているデモ用ログファイル生成コマンドを実行して生成しました。
$ cd jitwatch $ ./makeDemoLogFile.sh $ ls -la -rw-r--r-- 1 jyukutyo jyukutyo 12390354 12 11 14:45 hotspot_pid78905.log
JITWatchを起動します。
$ ./launchUI.sh
ログファイルを読み込みます。
2014年当時より上部にあるボタンの数が増えていますね。新機能はコンパイラスレッドのキューなどを確認できるようなので、Threadボタンを押します。
おおっ!かっこいいグラフが出ました。これはネイティブでのサイズです。
こちらはバイトコードのサイズ。この四角いブロックを選択すると、JITコンパイル対象のクラスやバイトコードサイズといった情報が画面下部に出ます。
コンパイラスレッドのキューです。
以前からあるかもしれませんが、他のボタンも押してみます。
Timeline。
C1/C2はコンパイラ、C2NとOSRはコンパイルの種類です。C2NはCompile to Native、OSRはOn-Stack Replacementです。
Cache。コードキャッシュのサイズが見れます。
NMethods。ネイティブメソッドでしょうね。コードキャッシュのレイアウトが見れます。これどう使うんだ…
さきほどのツイート主である@chriswhocodesさんが、新機能の説明動画も公開しています。
JITWatch、とてもよいツールですし、まだまだ進化しているようです!