-serverモードで実行されているJava、バージョンが「混合モード」であると言うのはなぜですか?それを見ると、JVMが純粋なサーバーモードで実際にロードされなかったということですか? ?
サーバーモードは「混合されていない」という意味ではありません。それらは異なる設定です。
混合とは、JVMがコンパイル済みコードとインタープリターコードを混合することを意味します。オプションで、スイッチ-Xintを使用して完全解釈モードに切り替えることができます(通常、これは行いたくありません)。
サーバーモードとは、ホットスポットコンパイラがサーバー設定で実行されることを意味します。一般的な想定では、サーバーモードのVMは長時間実行されるため、最適化はこれを念頭に置いて行われます。
したがって、混合モードが表示された場合、それはVMがサーバーモードで実行されていないことを示すものではありません。
編集:実際に実行されているものを確認したい場合は、の出力を試してください
System.out.println(System.getProperty("Java.vm.name"));
System.out.println(System.getProperty("Java.vm.info"));
少なくともSun VMまたはOpenJDKの場合、これはヒントを提供します。サーバーを常に実行していることに気付くかもしれませんVM 64ビットシステム。
クライアントとサーバーの両方のホットスポットコンパイラは、Javaランタイム環境に含まれています。
デフォルトでは、クライアントコンパイラは有効になっていますが、サーバー側のアプリケーションが集中している場合は、-serverruntimeオプションを指定してサーバーコンパイラを実行できます。 -versionの出力に見られるように、Hotspot仮想マシンは通常混合モードで実行されます。混合モードとは、メソッドがインタープリターを介して実行された回数など、いくつかの基準が満たされたときに、ホットスポットがJavaバイトコードをネイティブコードに動的にコンパイルすることを意味します。混合ランタイムモードでは、通常、最高のパフォーマンス。