ナビゲーションをスキップ

JRockit SDK の紹介

  前 次 前/次ボタンと目次ボタンとの区切り線 目次  

BEA JRockit SDK について

BEA JRockit SDK は、現在市販されている他の JVM を引き離す、数多くの重要な機能を備えています。この節では、ユーザが理解しやすいように、SDK の特に重要な機能について概要を示します。この節の内容は以下のとおりです。

 


SDK

BEA JRockit SDK は Sun JDK と非常に似ていますが、BEA JRockit JVM に新しい JRE があり、Java クラス ライブラリの一部が変更されています (ただし、BEA JRockit のクラス ライブラリの動作はすべて Sun JDK と同じです)。

 


Java Runtime Environment

SDK で使用される Java 2 実行時環境の BEA JRockit 実装です。実行時環境には、Java プログラミング言語で記述されたプログラムの実行をサポートする BEA JRockit JVM、クラス ライブラリ、およびその他のファイルが含まれます。

 


BEA JRockit Management Console

Management Console は BEA JRockit JVM に接続して、メモリ使用率やプロファイリング情報など、サーバの動作やリソースの可用性に関するリアルタイムの情報を提供します。アプリケーションに関する一定のプロファイル データを入手するための強力な手段となります。

Management Console を使用すると、プロダクション環境のアプリケーションに影響を与える、相互に関連した複雑な変数の集合を自在に制御できるため、商用 Java ソリューションをデプロイする場合には特に利点があります。管理者は、BEA JRockit JVM の動作特性と Java アプリケーションを監視し、リソースの可用性や動作特性に変化があったときに自動的に通知を受けることができます。管理者はこの情報に基づいて、パフォーマンスのボトルネックを特定し、操作パラメータや環境パラメータを変更して、パフォーマンスと可用性を最適化することができます。

Management Console の詳細については、「BEA JRockit Management Console の使い方」を参照してください。

 


コードの生成と最適化

BEA JRockit がほとんどの JVM と異なる点は、JIT (Just In Time) コンパイラを実装して、最初に使用する際にコードをコンパイルすることです。このため、起動時間がわずかに長くなりますが、アプリケーションに求められるパフォーマンスが最初から保証されます。ただし、起動を速くするために、BEA JRockit はコンパイラの最適化機能を完全には使用しません。最適化を完全に使用すると、アプリケーションの実行時に早い段階でパフォーマンスが向上する可能性がありますが、結果として起動が遅くなります。

コンパイル時間はアプリケーションの実行時間に含まれるため、使用できるすべての最適化を行ってすべてのメソッドをコンパイルすると、アプリケーションのパフォーマンスに悪影響を与えます。そのため、BEA JRockit は起動時にすべてのメソッドを完全に最適化するのではなく、実際には、実行されるアプリケーション全体にわたって、多くのメソッドを最適化しないまま残します。代わりに、BEA JRockit は、最適化するとアプリケーションのパフォーマンスに最もメリットのある関数を選択し、そのメソッドだけを最適化します。

このように、BEA JRockit は、JIT コンパイラと最適化コンパイラという、別個でありながら協調し合う 2 つのコード ジェネレータを備えていると見ることができます。JIT コンパイラは、バイトコードから、3 つのレベルの中間表現を経て、ネイティブ コード (アセンブリ言語) にデータを変換します。最適化コンパイラは、対象のメソッドを、中間表現のそれぞれのレベルで最適化します。

BEA JRockit は「サンプルのスレッド」を使用して、最適化すべき関数を特定します。このスレッドは定期的に起動して、複数のアプリケーション スレッドの状態をチェックします。各スレッドの実行内容を特定し、実行履歴を記録します。この情報はすべてのメソッドで追跡されます。あるメソッドが頻繁に使用されている (つまり「ホット」である) ことがわかると、そのメソッドは最適化の対象として指定されます。一般に、そのような最適化の機会はアプリケーションの実行の早い段階で発生し、実行が進むにつれて、その割合は小さくなります。

BEA JRockit の最適化コンパイラには、特に IA64 マシン向けの、有名なコード生成の手法が数多く取り入れられています。IA64 の大きなレジスタ スタックを最大限に活用する、洗練されたレジスタ アロケータが採用されています。

 


メモリ管理 (ガベージ コレクション)

ガベージ コレクションは、Java ヒープから不要になったオブジェクトを消去して、その領域を新しいオブジェクトのために解放するプロセスです。このガベージ コレクタの結果、効率的な処理が実現されます。BEA JRockit では、動的なガベージ コレクタを選択できます。動的なガベージ コレクタは、2 つの優先順位 (メモリ スループット、またはコレクションによって生じる休止時間の長さ) のいずれかに基づいてコレクション アルゴリズムを決定します。統合ガベージ コレクタが動的であるというのは、あらかじめ定義されたヒューリスティックに基づいて実行中にどのコレクション アルゴリズムを使用するかを決定したり、個々の状況に適合していなければアルゴリズムを変更したりできるからです。統合ガベージ コレクタを実行する上で、実際のアルゴリズムを指定する必要はありません。

メモリを解放する方法として、動的なガベージ コレクションが最適でない場合もあります。そのような場合に備えて、BEA JRockit には「固定の」コレクタも数多く用意されています。固定のコレクタを使用するには、起動時に実際のコレクタを指定します (-Xgc:[collectorName])。または、起動時に -server オプションと -server オプションで選択した JVM モードによって決定されるデフォルトのコレクタを使用します。

ガベージ コレクタの選択と使用の詳細については、「BEA JRockit メモリ管理システムの使い方」を参照してください。

 

ナビゲーション バーのスキップ  ページの先頭 前 次