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

JRockit JVM チューニング ガイド

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

BEA 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<size>[k|K][m|M][g|G]

-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 はヒープの最大サイズを設定します。

デフォルトの最大ヒープ サイズは、システムの空き物理メモリ量によって決定される動的な値です。-Xmx が設定されていない場合、ヒープの増加によってページングが起こる危険性がなければ、Java ヒープは総物理メモリの 75% と 1GB のうちの小さい方まで増加する可能性があります。それでもページングは発生するかもしれませんが、可能な限り回避されます。

デフォルト

-server モードと -client モードは、総物理メモリ量を総物理メモリ量の 75% と 1GB のうちの小さい方に設定します。

実データ量に比べて最大ヒープ (-Xmx) を小さく設定すると、JRockit が頻繁にガベージ コレクションを実行することになり、パフォーマンスが影響を受ける可能性があります。

メモリ不足エラーの発生

JRockit のメモリ不足エラーには次の 2 種類があります。

  1. オブジェクトの割り当てが失敗してメモリ不足エラーが発生した場合は、最大ヒープ サイズ (-Xmx) を拡大する必要があります。
  2. ネイティブ メモリの割り当てが失敗してメモリ不足エラーが発生した場合は、JRockit のプロセスがメモリを浪費していることを意味します。この制約は、オペレーティング システムが決定します。このような状況に陥った場合は、最大ヒープ サイズ (-Xmx) を縮小し、より多くのメモリ リソースを解放して JRockit の残りのプロセスに回すことで問題を解決できる可能性があります。

ページング (ページ フォールト)

ページングは、アプリケーションにさまざまなパフォーマンスの問題を引き起こし、ガベージ コレクションの休止時間を長くする可能性があります。ページングを回避するには、-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 を参照してください。

表 2-1 デフォルトのスレッド スタック サイズ

OS

32 ビットのデフォルト

64 ビットのデフォルト

Windows

64KB

320KB

Linux

128KB

1MB

 

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