Fight the Future

Java言語とJVM、そしてJavaエコシステム全般にまつわること

JITWatchが進化してる

JITWatchはJITコンパイルを可視化し分析するためのツールなのですが、これは2014年にこのブログにも書きました。

jyukutyo.hatenablog.com

Twitterでこのツイートを見て、新機能を知りました。

新機能を見てみます。サンプルのログは、JITWatchに付属しているデモ用ログファイル生成コマンドを実行して生成しました。

$ cd jitwatch
$ ./makeDemoLogFile.sh
$ ls -la
-rw-r--r--   1 jyukutyo  jyukutyo  12390354 12 11 14:45 hotspot_pid78905.log

JITWatchを起動します。

$ ./launchUI.sh

ログファイルを読み込みます。

f:id:jyukutyo:20171211154536p:plain

2014年当時より上部にあるボタンの数が増えていますね。新機能はコンパイラスレッドのキューなどを確認できるようなので、Threadボタンを押します。

f:id:jyukutyo:20171211154717p:plain

おおっ!かっこいいグラフが出ました。これはネイティブでのサイズです。

f:id:jyukutyo:20171211154932p:plain

こちらはバイトコードのサイズ。この四角いブロックを選択すると、JITコンパイル対象のクラスやバイトコードサイズといった情報が画面下部に出ます。

f:id:jyukutyo:20171211155012p:plain

コンパイラスレッドのキューです。

以前からあるかもしれませんが、他のボタンも押してみます。

Timeline。

f:id:jyukutyo:20171211155245p:plain

C1/C2はコンパイラ、C2NとOSRはコンパイルの種類です。C2NはCompile to Native、OSRはOn-Stack Replacementです。

Cache。コードキャッシュのサイズが見れます。

f:id:jyukutyo:20171211155942p:plain

NMethods。ネイティブメソッドでしょうね。コードキャッシュのレイアウトが見れます。これどう使うんだ…

f:id:jyukutyo:20171211160119p:plain

さきほどのツイート主である@chriswhocodesさんが、新機能の説明動画も公開しています。

www.youtube.com

JITWatch、とてもよいツールですし、まだまだ進化しているようです!