JRockit JVM チューニング ガイド
![]() |
![]() |
![]() |
![]() |
BEA JRockit JVM では、実行するアプリケーションに合わせて自動的に使用されるデフォルト値が設定されています。BEA JRockit JVM のチューニングは、拡張オプション、すなわち起動時に入力する -X
コマンドライン オプションによって実行されます。-X
オプションは BEA JRockit JVM 専用のオプションであり、他の JVM とは大きく異なっている可能性があります。このオプションを使用して、BEA JRockit JVM の動作を Java アプリケーションのニーズに適合させます。
この節では、これらのオプションを使用して BEA JRockit をチューニングする方法について説明します。内容は以下のとおりです。
注意 : BEA JRockit が予期しない動作を示す場合は、BEA JRockit の開発者向け FAQ を参照してください。BEA JRockit 開発者のニュースグループも問題の解決策を見つけるのに役立ちます。
システムのパフォーマンスは、JVM で使用できる Java ヒープのサイズに大きく影響されます。この節では、初期ヒープ サイズ、最大ヒープ サイズ、および世代別ガベージ コレクタで必要になるナーサリのサイズの定義に使用するコマンドライン オプションについて説明します。また、BEA JRockit の実装に最適なヒープ サイズを決定するときに役立つ重要なガイドラインを示します。
-Xms
はヒープの初期および最小サイズを設定します。このオプションには、最大ヒープ サイズと同じサイズを設定することをお勧めします。次に例を示します。
-java -Xgcprio:throughput -Xmx:64m -Xms:64m myClass
-server
モード : ヒープの初期サイズおよび最小サイズをシステムの空き物理メモリ量の 25% (最大 64MB、最小 16MB) に設定します。
-client
モード : ヒープの初期サイズおよび最小サイズを 16MB に設定します。
起動時のパフォーマンスを改善するには、-Xms
を少なくとも実データの量と近い値に設定します。-Xms
を省略したか低い値に設定した場合、JRockit がヒープを増加するまでにガベージ コレクションが頻繁に行われると、起動速度が低下する可能性があります。
たとえば、制御された環境を望む場合などに、ヒープ サイズを一定にするには、-Xms
と -Xmx
を同じ値に設定します。
-Xmx:<size>[k|K][m|M][g|G]
デフォルトの最大ヒープ サイズは、システムの空き物理メモリ量によって決定される動的な値です。-Xmx
が設定されていない場合、ヒープの増加によってページングが起こる危険性がなければ、Java ヒープは総物理メモリの 75% と 1GB のうちの小さい方まで増加する可能性があります。それでもページングは発生するかもしれませんが、可能な限り回避されます。
-server
モードと -client
モードは、総物理メモリ量を総物理メモリ量の 75% と 1GB のうちの小さい方に設定します。
実データ量に比べて最大ヒープ (-Xmx
) を小さく設定すると、JRockit が頻繁にガベージ コレクションを実行することになり、パフォーマンスが影響を受ける可能性があります。
JRockit のメモリ不足エラーには次の 2 種類があります。
ページングは、アプリケーションにさまざまなパフォーマンスの問題を引き起こし、ガベージ コレクションの休止時間を長くする可能性があります。ページングを回避するには、-Xmx
をシステムの物理メモリの 75% 以内に抑えてください。また、メモリの可用性に影響するため、JRockit で同時に実行する他のアプリケーションのメモリ使用率も考慮する必要があります。
メモリの冗長出力が有効な場合 (-Xverbose:memory
)、ガベージ コレクション中にページ フォールトが頻発していると、警告が出力されます。
システムの空きメモリ量が大きく変動する場合は、-Xmx
を設定したくないこともあります。-Xmx を設定しない場合、システムのメモリが少なすぎるときに JRockit がヒープを増加することができなくなります。その結果、現在のヒープ サイズでオブジェクトの割り当てが失敗し、ページングを行わないとヒープを増加できなくなると、OutOfMemoryError が送出されることに注意してください。
-Xmx
を設定しなくても、ページングが発生する可能性があります。ヒープの半分以上を実データが占めている場合、JRockit はヒープを縮小しません。したがって、JRockit の起動後に別のアプリケーションが起動するなどして空きメモリ量が減少しても、JRockit がヒープを縮小できない可能性があります。
-Xns:<size>[k|K][m|M][g|G]
-Xns
は、世代別ガベージ コレクタにおける若い世代 (ナーサリ) のサイズを設定します。ガベージ コレクションの休止時間をなるべく短くする一方で、ナーサリを可能な限り大きくするのが最適です。これは、一時オブジェクトを大量に作成するアプリケーションでは非常に重要です。
注意 : 休止時間を表示するには、BEA JRockit JVM の起動時に -Xgcpause
オプションを指定します。
ナーサリの最大サイズは最大ヒープ サイズの 95% を超えることはできません。
-server
モード : デフォルトのナーサリ サイズは CPU あたり 10MB。たとえば、4 CPU システムであれば、デフォルト値は 40MB となります。
-client
モード: デフォルトのナーサリ サイズは 2MB。
また、-Xns
を使用してより大きな値に明示的に設定しない限り、デフォルトのナーサリは最大ヒープ サイズの 25% を超えることはできません。
-
Xss<size>[k|K][m|M]
は、スレッド スタック サイズを設定します。
最小スレッド スタック サイズは 16KB です。-Xss
を最小値より小さく設定すると、スレッド スタック サイズのデフォルトは自動的に最小値に設定されます。
スレッド スタック サイズを省略した場合のデフォルト値は、BEA JRockit が動作するプラットフォームによって異なります。詳細については、表 2-1 を参照してください。
![]() ![]() |
![]() |
![]() |