JIT または AOT コンパイラーの選択的な無効化
Java™ プログラムの障害が JIT または AOT コンパイラーの問題を示している場合は、問題をさらに絞り込むことができます。
このタスクについて
デフォルトでは、JIT コンパイラーはさまざまな最適化レベルでメソッドを最適化します。 それぞれの呼び出し回数に基づき、各メソッドに異なる最適化が選択されて適用されます。 呼び出し頻度の高いメソッドほど、より高いレベルで最適化されます。 JIT コンパイラーのパラメーターを変更することで、メソッドの最適化レベルを制御できます。 それにより、最適化プログラムが原因であるのか、また、最適化プログラムが原因である場合には、どの最適化に問題があるのかを判別できます。
AOTコンパイラーは、デフォルトでwarm最適化レベルでメソッドをコンパイルします。 AOTコンパイラーにより高いレベルでメソッドを強制的にコンパイルさせることは可能ですが、サポートされていません。
JITパラメーターは、-Xjitオプションに付加されるコンマ区切りリストとして指定します。 構文は、 -Xjit:< param1>,< param2>=< value>です。 以下に例を示します。
java -Xjit:verbose,optLevel=noOpt HelloWorldこの場合は、HelloWorld プログラムが実行され、JIT からの詳細出力が有効にされて、最適化は一切実行せずに JIT にネイティブ・コードを生成させます。 最適化オプションは、 -Xjitにリストされています。 AOT コンパイラーも、-Xaot オプションを使用して同様の方法で制御されます。 JIT コンパイラーの問題を診断する場合は -Xjit オプションを使用し、AOT コンパイラーの問題を診断する場合は -Xaot オプションを使用してください。コンパイラーのどの部分が障害の原因となっているのかを判別するには、以下のステップに従います。
手順
次のタスク
これらの設定のいずれかで障害が発生しなくなった場合は、 その回避策を使用できます。 この回避策は、Java サービス・チームがコンパイラーの問題を分析して修正する間の一時的なものです。 JIT または AOT のパラメーター・リストから disableInlining を削除しても障害が再発しない場合には、パフォーマンスを改善するために削除してください。 失敗したメソッドの検索 の指示に従って、回避策のパフォーマンスを向上させます。
それでも障害がnoOpt最適化レベルで発生する場合は、回避策としてJITまたはAOTコンパイラーを使用不可にする必要があります。