この章では、Oracle JRockit JVMの-XX
コマンドライン・オプションについて説明します。これらのオプションはすべて-XX
で始まります。
これらのオプションの中には実装するために特定のシステム要件を満たすことが必要なものがあり、その要件が満たされていない場合は、特定のオプションが機能しないことがあります。これらのオプションを使用するのは、使用中のシステムを熟知している場合のみにすることをお薦めします。これらのオプションの使用方法を誤ると、システムの安定性やパフォーマンスに悪影響が生じる場合があります。
注意: -XX オプションは常に変更される可能性があります。 |
この章では、JRockit JVMで使用できるすべての-XX
コマンドライン・オプションが、アルファベット順に一覧表示されています。
注意:
|
-XXcompactSetLimitPerObject(非推奨)
-XX:+|-CrashOnOutOfMemoryError
-XX:ExitOnOutOfMemoryErrorExitCode
-XX:+|-FlightRecordingDumpOnUnhandledException
-XX:+|-HeapDiagnosticsOnOutOfMemoryError
-XX:+|-HeapDumpOnOutOfMemoryError
-XX:SegmentedHeapDumpThreshold
-XX:+|-UseLargePagesFor[Heap|Code]
-XXaggressive
オプションは、JVMを高速で動作させて、安定した状態を早期に実現するための各種構成を一括して指定するオプションです。この目標を達成するために、JVMで起動時に使用される内部リソースの量は通常よりも多くなりますが、目標が実現された後は、適応性のある最適化が必要とされる頻度は低くなります。
このオプションで行われる構成の内容は、リリースごとに変更される可能性があります。
このオプションを-XX:+UseAllocPrefetch
と組み合せると、クリアするチャンクのサイズが-XX:AllocChunkSize
オプションによって設定されます。
このオプションを起動時に有効にした場合、JRockit JVMではJNI呼出しへのすべての引数が検証され、無効なJNI呼出しが検出されると、違反を示すエラー・メッセージとともにJVMが終了します。
このオプションは、JNIのメソッド・エントリでJVMがスタック・オーバーフローを明示的にチェックするかどうかを指定します。
圧縮は、Javaヒープ内のライブ・オブジェクトを寄せ集めて連続的な空き領域を拡大し、大きなオブジェクトの割当てに利用できるようにします。JVMがヒープを圧縮する際は、オブジェクトが移動されるため、すべてのスレッドを休止する必要があります。休止時間を短縮するため、ヒープの一部のみが圧縮されます。
形式
-XXcompaction:parameter1
=value1[,parameter2
=value2]
表3-1に、-XXcompaction
オプションに指定できるパラメータの一覧を示します。
表3-1 -XXcompactionのパラメータ
例
java -XXcompaction:heapParts=8000,internalPercentage=0.5 myApp
このオプションを2GBのヒープで設定すると、内部圧縮ごとにヒープの10MBを圧縮します。
例外
-XXcompaction
オプションを使用する場合は、次の点に注意してください。
同じ-XXcompaction
オプション内で互いに競合するパラメータは使用しないでください。
percentage
パラメータは、internalPercentage
およびexternalPercentage
の各パラメータと競合します。
full
パラメータは、percentage
、initialPercentage
、internalPercentage
およびexternalPercentage
などの他のパーセンテージ・パラメータと競合します。
abortable
パラメータはfalse
に設定できません。
enable
パラメータをfalse
に設定すると、警告が出力されます。
コマンドラインで先に指定されたパラメータは、後から指定されたパラメータによってオーバーライドされます。
-XXcompactRatio
オプションは、Oracle JRockit R28で非推奨とされています。このオプションはR28で機能しますが、かわりに-XXcompaction:percentage
を使用することをお薦めします。詳細は、「-XXcompaction」を参照してください。
-XXcompactRatio
の形式および使用に関する詳細は、次の場所でR27のドキュメントを参照してください。http://download.oracle.com/docs/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/index.html
-XXcompactSetLimit
オプションは、Oracle JRockit R28で非推奨とされています。このオプションはR28で機能しますが、かわりに-XXcompaction:maxReferences
を使用することをお薦めします。詳細は、「-XXcompaction」を参照してください。
-XXcompactSetLimit
の形式および使用に関する詳細は、次の場所でR27のドキュメントを参照してください。http://download.oracle.com/docs/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/index.html
-XXcompactSetLimitPerObject
オプションは、Oracle JRockit R28で非推奨とされています。このオプションはR28で機能しますが、かわりに-XXcompaction:maxReferencesPerObject
を使用することをお薦めします。詳細は、「-XXcompaction」を参照してください。
-XXcompactSetLimitPerObject
の形式および使用に関する詳細は、次の場所でR27のドキュメントを参照してください。http://download.oracle.com/docs/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/index.html
-XXcompressedRefs
オプションは、圧縮された参照の使用を制御し、ヒープに格納されるすべてのポインタを32ビットに制限します。圧縮された参照を使用するとJavaヒープ・リソースの使用量が削減され、メモリー・バスでトランスポートされるデータの量も減少するため、パフォーマンスが向上します。また、このオプションを指定すると、ヒープ上の領域も解放されます。
注意: -XXcompressedRefs は-XX:CompressedRefs と同等です。 |
形式
-XXcompressedRefs:parameter
=value
このコマンドを表3-2に示すいずれかのパラメータとともに使用して、圧縮された参照の動作を指定します。
表3-2 -XXcompressedRefsのパラメータ
パラメータ | 説明 |
---|---|
enable=true|false |
圧縮された参照を有効または無効にします。 |
size=4GB|32GB|64GB |
圧縮された参照のサイズを指定します。デフォルト・サイズは、表3-3に示すように各ヒープ・サイズによって異なります。 |
例
java -Xgc:pausetime -XXcompressedRefs:enable=true myApp
java -Xgc:pausetime -XXcompressedRefs:size=32GB myApp
デフォルト値
-XXcompressedRefs
を指定しない場合、ヒープ・サイズが4GB未満であれば、すべての64ビット・マシンで圧縮された参照が有効になります。-Xmxオプションを使用する際、表3-3に示すようにデフォルト値はヒープ・サイズによって異なります。
関連オプション
-XXcompressedRefs
によって、他のコマンドライン・オプションが次のような影響を受けます。
このオプションとともに指定された初期ヒープ・サイズ(-Xmx)が大きすぎる場合は、実行が停止してエラー・メッセージが生成されます。
-XXcompressedRefsオプションを使用して圧縮参照を明示的に指定しない場合、圧縮参照には大きすぎる(64GBを超える)初期ヒープ・サイズ(-Xms
)または最大ヒープ・サイズ(-Xmx
)を指定すると、圧縮参照は使用されません。JVMは停止されることなく、正常に実行されます。
このオプションが有効な場合、メモリー不足エラーが発生すると、JRockit JVMがクラッシュしてテキストおよびバイナリ・クラッシュ・ファイルを生成します。
注意: このオプションはR28.1の新機能です。R28.0では機能しません。 |
JVMがクラッシュしたときのクラッシュ・ファイルの生成はデフォルトで有効になっています。詳細は、『Oracle JRockit診断およびトラブルシューティング・ガイド』のクラッシュ・ファイルの概要に関する項を参照してください。
このオプションは、ツール(jrcmd
およびjconsole
など)をJRockit JVMにアタッチ可能かどうかを指定します。
通常、JRockit JVMがクラッシュするとプロセスの状態(コア・ダンプと呼ばれる)が保存されます。-XXdumpFullState
を使用すると、ヒープを含むすべてのプロセスの状態が保存されます。ディスク領域の使用量は増えますが、コア・ダンプを使用して、クラッシュを引き起こした問題の原因を突き止めるのがはるかに容易になります。このオプションを使用すると、大量の情報がディスクに保存されます。
-XXdumpSize
オプションを使用すると、ダンプ・ファイルを生成し、そのファイルの相対的なサイズを指定することができます。
形式
-XXdumpsize:size
このコマンドを表3-4に示すいずれかのパラメータとともに使用して、ダンプ・ファイルの相対的なサイズを指定します。
表3-4 -XXdumpsizeのパラメータ
ファイル・サイズ | 説明 |
---|---|
none |
ダンプ・ファイルを生成しません。 |
small |
Windowsでは、小さいダンプ・ファイルが生成されます(Linuxでは、詳細なコア・ダンプが生成されます)。小さいダンプには、トレース以外ほとんど何もないスレッド・スタックのみが含まれます。 |
normal |
すべてのプラットフォームで通常のダンプが生成されます。このダンプ・ファイルには、Javaヒープを除くすべてのメモリーが含まれます。 |
large |
Javaヒープを含めて、メモリー内にあるものがすべて含まれます。このオプションを指定した |
このオプションを起動時に指定すると、例外ロギングがフィルタ処理されます。JRockit JVMでは、このオプションで指定したタイプと一致する例外のみが記録されます。
このオプションを有効にすると、メモリー不足エラーが最初に発生した時点でJRockit JVMが終了します。メモリー不足エラーを処理するよりも、JRockit JVMのインスタンスを再起動する方が望ましい場合に利用できます。
このオプションは、メモリー不足エラーが発生したときのJVMプロセスの終了に対する終了コードを指定します。
-XXexternalCompactRatio
オプションは、Oracle JRockit R28で非推奨とされています。このオプションはR28で機能しますが、かわりに-XXcompaction:externalPercentage
を使用することをお薦めします。詳細は、「-XXcompaction」を参照してください。
-XXexternalCompactRatio
の形式および使用に関する詳細は、次の場所でR27のドキュメントを参照してください。http://download.oracle.com/docs/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/index.html
このオプションは、新しいタイプ・チェッカが失敗したときに古いベリファイアへのフェイルオーバーが発生するかどうか指定します。
このオプションはJRockitフライト・レコーダを有効または無効にします。JRockitフライト・レコーダがアプリケーションの起動時に無効にされていると、実行時に有効にすることはできません。
このオプションはJRockitフライト・レコーダ引数を有効または無効にします。JRockitフライト・レコーダが有効になっている場合のみ使用されます。
形式
-XX:FlightRecorderOptions=parameter1=value[,parameter2=value]
表3-5に、-XX:FlightRecorderOptions
オプションのパラメータの一覧を示します。
表3-5 -XX:FlightRecorderOptionsのパラメータ
パラメータ | 説明 | デフォルト値 |
---|---|---|
defaultrecording=true|false |
バックグラウンドの記録が有効か無効かを指定します。 |
false |
disk=true|false |
JRockitフライト・レコーダが連続的な記録をディスクに書き込むかどうかを指定します。 |
false |
dumponexit=true|false |
このパラメータはR28.1の新機能です。R28.0では機能しません。 制御された方式でJVMが終了するとき、フライト・レコーダ・データのダンプを生成するかどうかを指定します。 ダンプ・ファイルは、 |
false |
dumponexitpath= |
このパラメータはR28.1の新機能です。R28.0では機能しません。 制御された方式でJVMが終了するときに( 指定したパスがディレクトリの場合、作成した日付および時間を示すファイル名がJVMで割り当てられます。指定したパスにファイル名が含まれ、そのファイルがすでに存在する場合、JVMでは指定したファイル名に日付および時間のタイムスタンプを付加することで、新規ファイルが作成されます。 |
|
globalbuffersize= |
データ保存に使用される主メモリーの合計量を指定します。 |
10MB |
maxage= |
デフォルト記録のためのディスク・データの最大期間を指定します。 このオプションは、 |
15分 |
maxchunksize= |
記録のデータ・チャンクの最大サイズ(MB)を指定します。 |
12MB |
maxsize= |
デフォルト記録のためのディスク・データの最大サイズを指定します。 このオプションは、 |
制限なし |
repository= |
一時ディスク記憶域のリポジトリ(ディレクトリ)を指定します。 |
デフォルトの場所は、システムの一時ディレクトリです。 |
settings= |
イベント設定( イベント設定ファイルの詳細は、『Oracle JRockitフライト・レコーダ・ラン・タイム・ガイド』のイベントに関する項を参照してください。 |
|
threadbuffersize= |
スレッドごとのローカル・バッファ・サイズを指定します。このパラメータの値が高いと、グローバル記憶域へのフラッシュを競合することなく、より多くのデータを収集することができます。スレッドリッチ環境でアプリケーションのフットプリントも増加します。 バッファの詳細は、『Oracle JRockitフライト・レコーダ・ラン・タイム・ガイド』のJFRバッファに関する項を参照してください。 |
5KB |
このオプションは(有効な場合)、スレッドが未処理の例外のために終了したときにFlight Recordingダンプを生成します。ダンプ・ファイルは、-XX:FlightRecordingDumpPathオプションで定義された場所に書き込まれます。
このオプションは、スレッドが未処理の例外のために終了したときに(-XX:+|-FlightRecordingDumpOnUnhandledExceptionが有効な場合)作成される、ダンプ・ファイル(フライト・レコーダ・データを含む)のパスおよび名前を指定します。
-XXfullSystemGC
オプションを使用すると、System.gc()
が呼び出されるたびに、ガベージ・コレクタが完全なガベージ・コレクションを行います。完全なガベージ・コレクションでは、古い領域のコレクションやソフト参照の解除も行われます。Javaからガベージ・コレクションを明示的に呼び出すたびに、ガベージ・コレクタで最大限のガベージ・コレクションを行いたい場合に、このオプションを使用します。
このオプションは、デフォルトのガベージ・コレクタでは十分なメモリーが解放されない場合に役立ちます。ただし、ガベージ・コレクションの休止時間が長くなることがあります。
このオプションでは、ガベージ・コレクタが使用するガベージ・コレクション・スレッドの数を指定します。このオプションはパラレルのナーサリ・コレクタとパラレルの古い領域コレクタの両方に適用されるだけでなく、コンカレント・コレクタと確定的コレクタにも適用されます。
形式
-XXgcthreads:parameter1=value1,parameter2=value2,...
このコマンドを表3-6に示すいずれかのパラメータとともに使用して、ガベージ・コレクタで使用されるスレッド数を指定します。
注意: parameter のかわりに数値を指定すると、その数値によって、パラレル・フェーズ中にガベージ・コレクションで使用されるガベージ・コレクション・スレッドの数が決まります。これは、all= number パラメータを使用する場合と同等です。
例:
|
表3-6 XXgcThreadsのパラメータ
パラメータ | 説明 |
---|---|
all= |
すべてのガベージ・コレクタ(若い、コンカレントおよびパラレル)に対するガベージ・コレクション・スレッドの数と同じ数を指定します。 |
yc= |
若いコレクタがパラレルで使用するガベージ・コレクション・スレッドの数を指定します。 |
con= |
古いコレクタがコンカレント・フェーズ中にパラレルで使用するガベージ・コレクション・スレッドの数を指定します。 |
par= |
古いコレクタが停止(一時停止)フェーズ中にパラレルで使用するガベージ・コレクション・スレッドの数を指定します。 |
-XX:GCTimePercentage
オプションは、合計実行時間の中でガベージ・コレクションに使用される時間の割合を決定します。
形式
-XX:GCTimePercentage=nn
nn
はガベージ・コレクションで使用される時間です。
-XX:GCTimePercentage
は-XX:GCTimeRatio
のかわりとして使用できます。
-XX:GCTimePercentage
を5に設定すると、合計時間の5%がガベージ・コレクションに使用されます。これは-XX:GCTimeRatio=19
と同等です。
-XX:GCTimeRatio
オプションでは、ガベージ・コレクション外で使用される時間(たとえば、アプリケーションの実行に使用される時間)とガベージ・コレクションで使用される時間の比率を指定します。
このオプションを使って、ヒープの空き領域がどこまで減った時点でコンカレント・ガベージ・コレクションを開始するかを設定できます。コンカレント・ガベージ・コレクション中にヒープが一杯になると、ガベージ・コレクションが一部のヒープ領域を解放するまでJavaアプリケーションはメモリーを割り当てることができません。このため、アプリケーションが休止状態になることがあります。ヒープが一杯にならないようにトリガー値は実行時に自動的にチューニングされますが、この自動のチューニングに時間がかかりすぎることがあります。この機能に頼らずに、-XXgcTrigger
を使って、ガベージ・コレクションのトリガー値をアプリケーションに適した値に最初から設定できます。
コンカレント・マーク・フェーズの途中でヒープが一杯になると、スイープ・フェーズはパラレル・スイープに戻ります。この動作が頻繁に起こり、これを回避するためにガベージ・コレクションのトリガー値が自動的に増えない場合、-XXgcTrigger
を使ってガベージ・コレクションのトリガー値を手動で増やしてください。
形式
-XXgcTrigger=nn
nn
は、ガベージ・コレクションがトリガーされたときに使用できる空きヒープの量を、ヒープ全体に占める割合で表す値です。若い領域は空きヒープの一部とみなされないことに注意してください。
例
java -XXgcTrigger=50 myApp
このオプションを設定した場合、JRockit JVMでは、ヒープが50%に達するとガベージ・コレクションがトリガーされます。たとえば、ヒープが1GB以下の場合、約512MBが空きの状態で保たれます。ガベージ・コレクションの現在のトリガー値は、トリガーが変更されるたびに-Xverbose:memdbg
の出力に表示されます。
このオプションは、メモリー不足エラーが発生したときに、JVMがJavaヒープ診断を出力するかどうかを指定します。ダンプ・ファイルは、-XX:HeapDumpPathオプションで定義された場所に書き込まれます。
このオプションは、-XX:+|-HeapDiagnosticsOnOutOfMemoryErrorオプションを有効にしている場合、ダンプ・ファイルのパスおよびファイル名を指定します。
-XX:HeapDumpOnCtrlBreak
オプションは、Ctrl-break
キーが押されると自動的に実行されるコマンドのリストに、hprofdump
診断コマンドを追加します(print_threads
診断コマンドと同様です)。HPROFダンプ・ファイルは、-XX:HeapDumpPathオプションで定義された場所に書き込まれます。
-XX:+|-HeapDumpOnOutOfMemoryError
オプションを有効にした場合、JRockit JVMでは、メモリー不足エラーが発生すると、JavaヒープがHPROFバイナリ形式(.hprof
ファイル)でダンプされます。
-XX:HeapDumpPath
オプションは、-XX:+HeapDumpOnOutOfMemoryError
オプションを使用している場合、ダンプ・ファイルのパスおよびファイル名を指定します。
-XX:HeapDumpSegmentSize
オプションは、セグメント化されたHPROFヘッド・ダンプを生成する際の適切なセグメント・サイズを指定します。
-XXheapParts
オプションは、Oracle JRockit R28で非推奨とされています。このオプションはR28で機能しますが、かわりに-XXcompaction:heapParts
を使用することをお薦めします。詳細は、「-XXcompaction」を参照してください。
-XXheapParts
の形式および使用に関する詳細は、次の場所でR27のドキュメントを参照してください。http://download.oracle.com/docs/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/index.html
-XXinternalCompactRatio
オプションは、Oracle JRockit R28で非推奨とされています。このオプションはR28で機能しますが、かわりに-XXcompaction:internalPercentage
を使用することをお薦めします。詳細は、「-XXcompaction」を参照してください。
-XXinternalCompactRatio
の形式および使用に関する詳細は、次の場所でR27のドキュメントを参照してください。http://download.oracle.com/docs/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/index.html
-XX:+|-JavaDebug
オプションは、JVM Tools Interface(JVMTI)が使用するデバッグ機能を有効または無効にします。JVMTIは、デバッガやプロファイリング・ツールで使用される低レベルのデバッグ・インタフェースで、JVMで実行中のアプリケーションの状態を調べ、実行を制御することができます。
プロファイラが頻繁に使用するJVMTIのサブセットは、いつでも有効です。しかし、コードをステップ単位に実行したり、ブレーク・ポイントを設定したりできる、デバッガが使用する機能は、オーバーヘッドを伴うため、常に有効なわけではありません。この機能を有効にするには、-XX:+JavaDebug
オプションを使用する必要があります。
警告: 本番環境では-XX:+JavaDebug オプションを使用しないでください。-XX:+JavaDebug オプションを指定して実行する場合、JVMは通常の速度では実行されないためです。 |
-XXkeepAreaRatio
オプションは、ナーサリ内の保持領域のサイズをナーサリに対する割合として設定します。この保持領域は、新しく割り当てられたオブジェクトが早期に古い領域にプロモートされることを防ぎます。
-XXlargeObjectLimit
オプションは、Oracle JRockit R28で非推奨とされています。このオプションはR28で機能しますが、かわりに-XXtlaSize:wasteLimit
を使用することをお薦めします。詳細は、「-XXtlaSize」を参照してください。
-XXlargeObjectLimit
の形式および使用に関する詳細は、次の場所でR27のドキュメントを参照してください。http://download.oracle.com/docs/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/index.html
-XX:MaxCodeMemory
オプションは、生成されたコードに使用される最大メモリーを指定します。
このオプションは、java.nio(新規I/Oパッケージ)の直接バッファ割当ての最大合計サイズを指定します。
-XX:MaximumNurseryPercentage
オプションを使用すると、直近の古いコレクション後の使用可能なヒープの空き領域に対して相対的に、ナーサリ・サイズの上限を設定できます。それには、使用可能なヒープの空き領域のサイズに対する割合値として、この上限を指定します。
このオプションは、ラージ・ページの最大サイズを指定します。
このオプションは、ネットワーク・ソケットから読み取る際の受信バッファの最大サイズを指定します。
このオプションはWindowsのみに適用されます。
注意: このオプションはR28.1の新機能です。R28.0では機能しません。このオプションを0に設定すると、受信バッファ・サイズは無制限となります。これがR28.0での動作です。 |
-XXminBlockSize
オプションは、Oracle JRockit R28で非推奨とされています。このオプションはR28で機能しますが、かわりに-XXtlaSize:min
を使用することをお薦めします。詳細は、「-XXtlaSize」を参照してください。
-XXminBlockSize
の形式および使用に関する詳細は、次の場所でR27のドキュメントを参照してください。http://download.oracle.com/docs/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/index.html
-XXnoSystemGC
オプションでは、System.gc()
メソッドの呼出しによって、ガベージ・コレクションが開始することが防止されます。System.gc()メソッドの詳細は、java.lang.System
の仕様を次の場所で参照してください。
Java SE 6.0
J2SE 5.0
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/System.html
アプリケーションがSystem.gc()
を使用していて、コレクションを実行するタイミングをガベージ・コレクタで判断させる場合は、このオプションを使用してください。このオプションは一部のデバッグ状況で有用であり、また、不必要なガベージ・コレクションの発生を防ぐことでパフォーマンスも向上します。
-XX:OptThreads
オプションは、JVMでJavaメソッドの最適化のために使用されるスレッドの数を指定します。Javaメソッドの最適化はバックグラウンドで実行されます。
このオプションを指定すると、新しいチャンクが使用された時点でフェッチされるチャンクが1つ多くなります(後続の2つのチャンクがフェッチされるようになります)。
注意: Intel Xeonサーバーでこの機能の効果を十分に上げるには、コンピュータのBIOSでハードウェア・プリフェッチを無効にすることをお薦めします。 |
このオプションが有効になっていると、JVMが起動時に生成されたコードのためにメモリーを確保します。
-XX:SegmentedHeapDumpThreshold
オプションは、ヒープ使用量が指定したサイズを上回ると、セグメント化されたヒープ・ダンプ(.hprofファイル、1.0.2形式)を生成します。
4GBを超えるデータを含むヒープ・ダンプを生成するには、セグメント化されたhprofダンプ形式が必要です。-XX:SegmentedHeapDumpThreshold
オプションに4GBを超える値を設定すると、ヒープ・ダンプが正常に生成されないことがあります。
-XXsetGC
オプションは、Oracle JRockit R28で非推奨とされています。このオプションはR28で機能しますが、かわりに-Xgc
を使用することをお薦めします。詳細は、「-Xgc」を参照してください。
-XXsetGC
の形式および使用に関する詳細は、次の場所でR27リリースのドキュメントを参照してください。http://download.oracle.com/docs/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/index.html
このオプションを有効にすると、JRockit JVMは厳密な浮動小数点演算をすべてのクラスのすべてのメソッドでグローバルに有効にします。また、JVMはJava仕様で要求されているより高い精度で、より広い値の範囲を使って計算を行います。このオプションを使用した場合、コンパイラはJava仕様に厳密に準拠するコードを生成し、どのプラットフォームでもまったく同じ結果が得られるようにします。このオプションを使用しないと、JVMは浮動小数点値をそれほど厳密に適用しません。
このオプションは、Javaキーワードstrictfp
に似ています。ただし、このキーワードはクラス・レベルで適用されるのに対し、-XX:+|-StrictFP
はグローバルに適用されます。strictfp
キーワードの詳細は、次の場所で「Java Language Specification」を参照してください。
JRockit JVMで実行されるアプリケーションのフライト・レコーダ記録を開始するには、このオプションを起動時に指定します。このオプションは、フライト・レコーダを実行時に開始するstart_flightrecording
診断コマンドと同等です。詳細は、Oracle JRockit JDKツールを参照してください。
形式
-XX:StartFlightRecording=parameter1=value1[,parameter2=value2]
-XX:StartFlightRecording
を、表3-7に示すパラメータとともに使用します。
表3-7 -XX:StartFlightRecordingのパラメータ
パラメータ | 説明 | デフォルト値 |
---|---|---|
compress=true|false |
ディスク上のフライト・レコーダ記録ログ・ファイル(.jfrファイル)を、gzipファイル圧縮ユーティリティを使用して圧縮するかどうかを指定します。このパラメータは、 |
false |
defaultrecording=true|false |
記録を連続的に行うか、限られた時間だけ実行するかを指定します。 |
false |
delay= |
実行時間の最初から記録を開始するまでの時間を指定します。 |
0 |
duration= |
記録のための時間を指定します。 |
無制限 |
filename= |
フライト・レコーダ記録ログ・ファイル(.jfrファイル)の名前を指定します。 |
なし |
name= |
フライト・レコーダ記録の識別子を指定します。 |
Recording |
maxage= |
デフォルト記録のためのディスク・データの最大期間を指定します。 |
15分 |
maxsize= |
記録のための最大ディスク領域を指定します。このパラメータは、サイズが制限された記録のみに有効です。 |
制限なし |
settings= |
記録に使用するイベント設定ファイルを指定します。このパラメータは、1つのコマンドで複数回使用できます。 |
|
-XXtlaSize
オプションはスレッド・ローカル領域のサイズを設定します。
パフォーマンスを上げるために、JRockit JVMではオブジェクトの割当てにスレッド・ローカル領域(TLA)を使用します。このオプションでスレッド・ローカル領域のサイズをチューニングし、パフォーマンスに影響を与えることができます。
形式
-XXtlaSize:parameter=size[k|K][m|M][g|G]
表3-8に、パラメータ
の一覧を示します。
表3-8 -XXtlaSizeパラメータ
パラメータ | 説明 |
---|---|
min=size
|
TLAの最小サイズを設定します。 |
preferred=size
|
TLAの優先サイズを設定します。システムは、可能であればこのサイズのTLAの取得を試行しますが、取得できない場合は、最小サイズのTLAを取得します。場合によっては、TLAが優先サイズより大きいこともあります。優先サイズは、最小サイズより小さな値にはしないでください。 |
wasteLimit=size
|
TLAの浪費上限を設定します。これは、スレッドで新規TLAが必要なときにTLAが保持できる空きメモリーの最大量です。 |
-XXtlaSize
に上限または下限はありません。
このオプションは注意して使用してください。スレッド・ローカル領域のサイズを変更すると、パフォーマンスに重大な影響を与える可能性があります。
通常のk、M
、G
の接尾辞を使用して、size
をバイト単位で指定します。
注意: TLAサイズの旧式の設定(-XXtlasize=256k )は引続きサポートされていますが、非推奨です。旧式の設定を行うと、JRockit JVMでは、preferred パラメータが使用されたものとしてオプションを解釈します。たとえば、-XXtlasize=256k を指定すると、これは-XXtlasize:preferred=256k として解釈されます。 |
デフォルト値
最小サイズおよび浪費上限の両方のデフォルト値は2KBです。浪費上限は、最小サイズより大きい値に設定することはできません。
優先サイズのデフォルト値は、ヒープ・サイズまたはナーサリ・サイズと起動時に選択したガベージ・コレクタによって異なります。表3-9にそれぞれの構成のデフォルト・サイズを示します。
このオプションは、個々のjava.util.TreeMap
ノードのエントリ配列のサイズを指定します。このオプションはJVMのパフォーマンスに影響し、デフォルト値はほとんどのアプリケーションに適しています。
このオプションは、スレッドがファット・ロックをスピンするか、スピンしない(そのファット・ロックが取得できない場合に直接スリープ状態に入る)かを指定します。
このオプションを指定すると、スレッド・ローカル領域がチャンクに分割され、新しいチャンクが使用された時点で、その次のチャンクがプリフェッチされます。
注意: Intel Xeonサーバーでこの機能の効果を十分に上げるには、コンピュータのBIOSでハードウェア・プリフェッチを無効にすることをお薦めします。 |
関連オプション
-XX:+|-RedoAllocPrefetchを使用する場合は、このオプションを設定する必要があります。このオプションは-XX:AllocChunkSizeオプションとともに使用することもできます。
このオプションはコードの最適化のために、呼出しのプロファイリングの使用を有効化します。プロファイリングでは、アプリケーションに固有の有用な実行時統計を記録します。JVMがその統計を実行するためにパフォーマンスが向上します。
有効にすると、このオプションはCompletely Fair Scheduler(CFS)に順応した生成バージョンを使用します。このオプションは、JVMのパフォーマンスに問題が生じた場合だけ、CFSのみで使用してください。
注意: このオプションはLinuxのみで使用できます。 |
このオプションは、クラスのガベージ・コレクションを有効または無効にします。
クラスのガベージ・コレクションを無効にすると、ガベージ・コレクションの時間をある程度節約し、アプリケーション実行時の中断を最小限にすることができます。クラスのガベージ・コレクションを無効にすると、永続的に占有されるメモリーが増えます。このため、このオプションを注意して使用しないと、JVMでメモリー不足エラーがスローされます。
注意: アプリケーションの実行時にメモリー・リークを引き起こす可能性があるため、必要がないかぎりは、このオプションを無効にしないことをお薦めします。 |
このオプションは、定数プール文字列のガベージ・コレクションを有効または無効にします。
定数プール文字列のガベージ・コレクションを無効にすると、ランタイム共有プールから文字列の削除に伴うガベージ・コレクションのオーバーヘッドを削減できる場合があります。定数プール文字列のガベージ・コレクションを無効にすることで、永続的に占有されるメモリーが増える可能性があります。このため、オプションを慎重に使用しないと、JVMがメモリー不足エラーをスローする場合があります。
注意: このオプションはJRockit R28.3.2以降使用可能です。アプリケーション実行時にメモリー・リークが発生する可能性があるため、Oracleサポートによってリクエストされないかぎり、このオプションを無効にしないことを強くお薦めします。 |
定数プールのガベージ・コレクションが無効になっていても、ガベージ・コレクション・システムの支援なしに、特定の文字列が不要になりこれを定数プールから削除することをJVMが判別できる場合があります。
このオプションは、レイテンシのタイムスタンプを低くするためのハードウェア・サポートの使用を指定します。
注意: ハードウェア・タイムスタンプをサポートしていないプラットフォームでこのオプションを有効にすると、JRockit JVMで有効ではないタイムスタンプが使用されることになり、致命的なエラーが引き起こされる可能性があります。 |
-XX:-UseFatSpin
オプションでは、Javaのファット・ロック・スピン・コードを無効にし、ファット・ロックを取得しようとしてブロックされたスレッドが直接スリープ状態に入れるようにします。
Javaのオブジェクトは、いずれかのスレッドがそのオブジェクト上で同期ブロックに入るとすぐにロックになります。すべてのロックは、ロックしているスレッドが解放するまで保持されます(つまりロックされたままになります)。ロックがすぐに解放されないと、ロックはファット・ロックに引き上げられることがあります。スピンは、特定のロックを必要としているスレッドが、タイトなループの中でスピンしながら、そのロックがまだ取得されているかどうかを継続的にチェックするときに発生します。ファット・ロックに対するスピンは一般に効果がありますが、場合によっては負荷をかけて、パフォーマンスに影響を与えることがあります。-XX:-UseFatSpin
を使用すると、ファット・ロックに対するスピンを無効にし、パフォーマンスへの潜在的な影響を排除することができます。
このオプションは、JVMのJavaヒープやコードに、可能であればラージ・ページを使用することを有効にします。ラージ・ページを使用すると、アプリケーションでプロセッサ内のTLB(Translation Look-aside Buffer)をより効果的に利用できるようになります。
注意: このオプションは-XlargePagesオプションの機能と重複します。-XlargePages オプションのかわりに-XX:+|-UseLargePagesFor[Heap|Code] オプションを使用することをお薦めします。
拡張オプション( |
-XX:+|-UseLazyUnlocking
が有効になっていると、重要なセクションの実行が終了してもその時点ではロックは解放されません。そのため、ロックが一度取得された後で、次にそのようなロックを取得しようとするスレッドは、そのロックがすでに解放されているか、または解放可能であることを確認する必要があります。この確認は、最初のスレッドがその時点でまだロックを使用し続けているかどうかを調べることによって行われます。実際の共有ロックは最終的に通常のロックに変換され、これによって共有ロックでのロック操作のパフォーマンスが向上します。
-XX:+|-UseLockProfiling
オプションは、JRockitフライト・レコーダでのJavaロックのプロファイリングを有効または無効にします。
Javaロック・プロファイリング・データを取得するには、JRockitフライト・レコーダのロック・イベントも有効にする必要があります。詳細は、『Oracle JRockitフライト・レコーダ・ラン・タイム・ガイド』を参照してください。
このオプションは、Javaヒープに4GBの低いアドレス領域を使用することをJVMに指示します(可能な場合)。
このオプションは、新規の高速なハッシュ関数がjava.util.HashMapで有効かどうかを指定します。このハッシュ関数では、ハッシュ・スプレッドの向上に伴いパフォーマンスが改善されていますが、HashMapに格納される要素の順序は変更されています。
このオプションでは、java.lang.Thread.setPriority()
および関連するAPIを使用して、Javaスレッドの優先順位を制御できます。この機能が無効の場合、これらのAPIを使用しても効果はありません。
警告: この機能は実験的な機能であり、Oracleは現時点ではこの機能をサポートしていません。この機能を間違って使用すると、深刻なパフォーマンスの問題が発生するおそれがあります。 |