Interstage Application Server/Interstage Web Server チューニングガイド |
目次 索引 |
第7章 JDK/JREのチューニング | > 7.2 FJVM |
FJVMでサポートされるガーベジコレクション(GC)処理には、JavaヒープのNew世代領域に対するGC制御方法の違いにより、以下の3種類があります。
New世代領域用GC制御に対して何も付加機能を追加していない「標準機能のみ」で構成されたGC処理です。後述のパラレルGCとの対比から、標準GCのことをシリアルGCと呼ぶ場合もあります。
Java HotSpot Client VM、実行モードが64ビットモードのJDK/JRE 1.4のFJVM、および図1のオプションを指定した場合のFJVMでは、シリアルGCが実行されます。なお、図1のオプションは、後述のFJGCまたはパラレルGCによるGC制御を無効にするオプションです。
JDK/JRE 1.4の場合: -XX:-UseFJGC |
図2はシリアルGC使用時に利用可能となる「Javaヒープのチューニング用オプション」です。
-Xms |
New世代領域用GC制御に対し、富士通独自技術による「New世代領域サイズ自動調整機能」を追加して構成されたGC処理です。富士通独自技術によるGC制御を用いていることから、このGCをFJGCと呼ぶ場合もあります。
実行モードが32ビットモードのJDK/JRE 1.4のFJVMの場合は、デフォルトでこのGC処理が実行されます。
JDK/JRE 5.0のFJVMの場合は、図3のオプションを指定した場合に、このGC処理が実行されます。
-XX:+UseFJGC |
図4はFJGC使用時に利用可能となる「Javaヒープのチューニング用オプション」です。
-Xms |
New世代領域サイズ自動調整機能未提供のFJVM
実行モードが64ビットモードのFJVMには、New世代領域サイズ自動調整機能を提供していません。
このFJVMに図3のオプションを指定した場合は、図5のワーニングメッセージが標準エラー出力へ出力され、オプションの指定は無効になります。
warning: -XX:+UseFJGC is not supported in Java HotSpot 64-Bit Server VM. |
New世代領域用GC制御に対し、「当該処理を並列化して実行する機能」を追加して構成されたGC処理です。New世代領域用のGC制御を並列化して実行することから、このGCをパラレルGCと呼ぶ場合もあります。
JDK/JRE 5.0のFJVMの場合は、デフォルトでこのGC処理が実行されます。
図6はパラレルGC使用時に利用可能となる「Javaヒープのチューニング用オプション」です。
-Xms |
JDK/JRE 1.4の場合
JDK/JRE 1.4のFJVMでは、パラレルGCはサポート対象外のGC処理です。
JVMPIとJVMTI
JDK/JRE 5.0を使用し、GC処理としてパラレルGCが選択されている場合、Java Virtual Machine Profiling Interface(JVMPI)をサポートしていません。
JVMPI相当の機能を使用する場合には、JDK/JRE 5.0から導入されたJava Virtual Machine Tool Interface(JVMTI)を使用してください。
JDK/JRE 5.0でJVMPI機能は推奨されていません。やむを得ず使用する場合は、GC処理としてシリアルGCを使用してください。
GC処理用スレッド数
パラレルGCを使用した場合は、実行するハードウェアに搭載しているCPU数分のGC処理用スレッドがJavaプロセス内に作成されます。そのため、GC処理用スレッドの数分だけ、スタック域などのスレッド用のメモリ領域が必要となります。
Javaプロセス内でのメモリ量を抑えるためなど、GC処理用スレッドの数を抑制する場合には、図7のオプションでGC処理用スレッドの数を指定することにより、GC処理用スレッドの数を抑制することができます。
なおGC処理用スレッドの数を抑制した分だけGC処理における性能がおちる場合もありますので、このオプションを用いる場合には、十分な性能確認を実施してください。また、一般的に、CPU数以上の数のGC処理用スレッドを作成しても、GC処理における性能向上にはつながりません。
-XX:ParallelGCThreads=GC処理用スレッドの数(0を指定した場合は搭載CPU数) |
メモリ割り当てプールの省略値自動調整機能
FJVMのパラレルGCでは、JDK/JRE 5.0の機能であるエルゴノミクス機能によるメモリ割り当てプールの初期値(-Xms)および最大値(-Xmx)の省略値自動調整機能(マシンの物理メモリ量などに応じて、-Xmsおよび-Xmxの各オプションに対する省略値を自動的に決定する機能)を無効にしています。
JDK/JRE 5.0のFJVMで、エルゴノミクス機能によるメモリ割り当てプールの省略値自動調整機能を有効にする場合は、図8のオプションを指定してください。
ただし、このオプション指定は、システムのメモリ資源不足の要因となる場合があるため、システム内に複数のJavaプロセスを起動、実行する場合には使用しないでください。
-XX:+AutomaticallyJavaHeapSizeSetting |
メモリ領域不足事象の検出機能
FJVMのパラレルGCでは、JDK/JRE 5.0の機能であるエルゴノミクス機能によるメモリ領域不足事象の検出機能(図9の各オプション指定値による条件が同時に成立した場合に、メモリ領域不足事象(java.lang.OutOfMemoryError)として検出する機能)を無効にしています。
JDK/JRE 5.0のFJVMでエルゴノミクス機能によるメモリ領域不足事象検出機能を有効にする場合は、図10のオプション(使用するJDK/JREの違いにより異なるため注意が必要です)を指定してください。
ただし、このオプション指定で検出されるメモリ領域不足事象は、Javaヒープの使用量だけではなく、メモリ領域不足事象検出用オプションで指定された値、およびガーベジコレクション処理の動作状況から得られた統計情報などを元に決定されるため、Javaヒープの使用量が不足していない状態であっても、 メモリ領域不足事象が検出される場合がありますので注意してください。
-XX:GCTimeLimit=GC処理に要する時間の上限値 (デフォルトは98) -XX:GCHeapFreeLimit=GC処理後のJavaヒープ量の空きスペースの下限値 (デフォルトは2) |
-XX:+UseGCTimeLimit |
各環境におけるデフォルトのGCを下表に示します。
【JDK/JREの実行モードが32ビットモードの場合】
|
JDK/JRE 1.4 |
JDK/JRE 5.0 |
||
VMの種類 |
Client VM |
FJVM |
Client VM |
FJVM |
デフォルトのGC |
シリアルGC |
FJGC |
シリアルGC |
パラレルGC |
【JDK/JREの実行モードが64ビットモードの場合】
|
JDK/JRE 1.4 |
JDK/JRE 5.0 |
VMの種類 |
FJVM |
FJVM |
デフォルトのGC |
シリアルGC |
パラレルGC |
※実行モードが64ビットモードのClient VMを提供していません。
デフォルトのGCの使用を推奨します。
通常、デフォルトのGCを変更する必要はありません。
目次 索引 |