JavaTM 仮想マシン |
ドキュメントの目次 |
Java 2 SDK, Standard Edition には、次の 2 つの Java 仮想マシン (VM) 実装が組み込まれています。
- Java HotSpot Client VM
- Java HotSpot Client VM は、Java 2 SDK と Java 2 Runtime Environment のデフォルトの仮想マシンです。 名前が示すように、アプリケーションの起動時間を短縮し、必要なメモリを縮小することにより、クライアント環境でアプリケーションを実行したときに最高のパフォーマンスが得られるように調整されています。
- Java HotSpot Server VM
- Java HotSpot Server VM は、サーバ環境で動作するアプリケーションのプログラム実行速度が最大になるように設計されています。 Java HotSpot Server VM は、アプリケーション起動時に -server コマンド行オプションを使って呼び出します。たとえば次のようになります。
java -server MyAppどちらの VM 実装にも共通する Java HotSpot テクノロジの機能を次に示します。
- 「適応型コンパイラ」 - アプリケーションは標準のインタプリタで起動しますが、実行時にはコードを解析してパフォーマンスのボトルネック、つまり「ホットスポット」を検出します。 Java HotSpot VM は、パフォーマンスを向上させるため、コードのこのようなパフォーマンス-クリティカルな部分をコンパイルしますが、ほとんど使われないコード (プログラムの大部分) を不必要にコンパイルすることはありません。 また、Java HotSpot VM は、適応型コンパイラを使って、インライン化など、コンパイルしたコードを最適化するための最善の方法を瞬時に判断します。 コンパイラが実行時解析を行うので、最大のパフォーマンスを生み出す最適化処理を推測で判断しなくて済みます。
- 「高速メモリ割り当て」と「ガーベジコレクション」 - Java HotSpot テクノロジではオブジェクトに対して高速メモリ割り当てが行われます。また、高速で効率的な最先端のガーベジコレクタが備わっています。
- 「スレッド同期」 - Java プログラミング言語は、プログラム実行の複数の並列パス (「スレッド」と呼ばれる) の使用を考慮に入れています。 Java HotSpot テクノロジは、スレッド処理機能を実現しています。この機能は、大規模なメモリ共有型のマルチプロセッササーバでの使用を容易にスケーリングできるよう設計されました。
次に Java HotSpot VM の新機能を示します。
- シグナル連鎖機能
- エラー報告機構
- 新しい -Xloggc:file オプションは -verbose:gc と同様にガーベジコレクションイベントが発生するたびに報告しますが、そのデータを file に記録します。 -verbose:gc により報告される情報のほかに、報告される各イベントの先頭に、最初のガベージコレクションイベントからの経過時間 (秒単位) が付け加えられます。
- J2SDK 1.4.0 以降、Classic 仮想マシンは Java 2 SDK には含まれなくなりました。 (Solaris プラットフォームでは、Classic VM は J2SDK 1.3.0 で削除されました。) -classic コマンド行オプションを使って Classic VM でアプリケーションを実行してきた場合、Java HotSpot Client VM (デフォルトまたは -client オプションで呼び出す) または Java HotSpot Server VM (-server オプションで呼び出す) のどちらかを使う必要があります。 -classic オプションでアプリケーションを起動しようとすると、次のようなメッセージが表示されます。 Error: Classic VM no longer supported.
- J2SDK 1.4.0 の SolarisTM-SPARCTM プラットフォーム版では、Java HotSpot Server VM を使用すると、64 ビット Sparc-v9 プラットフォームで 64 ビットの動作がサポートされます。 64 ビットのアドレス空間があるので、4 G バイト以上のヒープメモリが使用可能です。 Java HotSpot Server VM は 32 ビットと 64 ビットの両方をサポートしています。ユーザはコマンド行フラグ -d32 または -d64 を使用して 32 ビットまたは 64 ビットの動作を選択できます。
- Java Native Interface を使用するには、コードを再コンパイルして 64 ビットの VM で動作できるようにする必要があります。
- Java HotSpot Client VM は 64 ビットをサポートしていません。 Java HotSpot Server VM だけが、オプションで 64 ビットの動作を提供します。
- 仮想マシンを 64 ビットモードで実行するには、 64 ビットの Solaris サポートをインストールする必要があります。
- 以前の Sparcv9 システムでは、64 ビットプログラムを利用できるように、/platform/sun4u/boot.conf ファイルを変更する必要があります。 詳細は、boot.conf ファイルのテキストを参照してください。
- 新しいコマンド行オプション -Xcheck:jni は、Java Native Interface (JNI) 機能に対して追加チェックを行います。 具体的には、Java 仮想マシンは JNI 要求を処理する前に、JNI 関数に渡されるパラメータと、実行環境のデータを検証します。 無効なデータが見つかった場合は、ネイティブコードに問題があることを示しているため、Java 仮想マシンは致命的エラーを発生して終了します。 このオプションを使用すると、パフォーマンス低下が予想されます。
- J2SE 1.4.0 プラットフォームでは、45.3 から 48.0 のクラスファイルバージョンを使用できます。
Sun Microsystems, Inc. の Web サイトでは次のドキュメントも利用できます。
Copyright © 2002 Sun Microsystems, Inc. All Rights Reserved. コメントの送付先: j2se-comments@eng.sun.com |