LoginSignup
5
4

More than 3 years have passed since last update.

OpenJDKのJIT解析用オプション

Last updated at Posted at 2019-09-07

自分用メモ

関連リソース

主要なオプション

-server

サーバ用VMを起動

-client

クライアント用VMを起動 (64bit JDKではこのオプションは無視される)

-Xint

JITコンパイルしない

-Xcomp

インタプリタ実行を無効にし (-Xintの真逆)、初回の呼び出しでコンパイルするようにする。
インタプリタでプロファイルするタイミングがないのでこれは当然普通にJITするのに比べ遅くなる。

-Xmixed

ネイティブコードにコンパイルされるホットなメソッド以外はインタプリタ実行する。これはつまりデフォルトなので普通は使う必要がない…

-Xbatch (-XX:-BackgroundCompilation)

JITコンパイルをフォアグラウンドで実行

-XX:CompileThreshold=10000

インタプリタ実行される回数。これを越えるとJITされる。

ただしこれは -XX:-TieredCompilation じゃないと使われないらしい。

-XX:+PrintAssembly

requires: -XX:+UnlockDiagnosticVMOptions

disassembler.so を使ってbytecoded / nativeなメソッドのアセンブリコードを出力する

-XX:+PrintCompilation

JITしたメソッド名と生成コードサイズを表示する

-XX:+PrintInlining

requires: -XX:+UnlockDiagnosticVMOptions

インライン化の決定をプリントする。

-XX:+PrintInterpreter

hsdis (hotspot disassembly) がある状態だとインタプリタ用の生成コードを出力できるらしい?

-XX:+PrintStubCode

hsdis がある状態だとスタブコードの生成コードを出力できるらしい?

-XX:+CITime

JITに要した時間を表示する

-XX:TieredStopAtLevel=n

以下のレベルがサポートされている。(ソース)

  • level 0 - interpreter
  • level 1 - C1 with full optimization (no profiling)
  • level 2 - C1 with invocation and backedge counters
  • level 3 - C1 with full profiling (level 2 + MDO)
  • level 4 - C2

-XX:-TieredCompilation

上記のlevel 1~3を無効にし、インタプリタ実行かC2かの二択にする

-XX:+OnStackReplacement

OSR有効化。 -XX:-OnStackReplacementで無効にできる

その他のオプション

-XX:InlineSmallCode=n

インライン化する最大のネイティブコードサイズ

-XX:MaxInlineSize=35

インライン化する最大のバイトコードサイズ

-XX:FreqInlineSize=n

頻繁に実行されるメソッドのうちインライン化される最大のバイトコードサイズ (デフォルトは環境により異なる)

-XX:ReservedCodeCacheSize=32m

最大コードキャッシュサイズ。amd64だと2048mがデフォルト?

-XX:AllocatePrefetchLines=1, -XX:AllocatePrefetchStyle=1

オブジェクトアロケーション後のプリフェッチ命令に関する設定

-XX:+DisplayVMOutputToStderr

VMの出力をstderrに出せるっぽい?

-XX:+LogCompilation -XX:LogFile=/tmp/compilation.log

JITコンパイルのログを出せる?

ネイティブコードのどれがどのメソッドなのか調べられるらしい (How to debug compiled (JIT generated) code in Hotspot (OpenJDK JVM – Linux x86_64)?)

-XX:CompileCommand, -XX:CompileCommandFile

JIT対象の指示ができる。後述の.hotspot_compilerと同じ機能っぽい。

設定ファイル

.hotspot_compiler

exclude, dontinline, compileonly などJIT対象メソッドを指定できる

.hotspotrc

-XX: 以外の部分を羅列してオプションを指定できる?

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4