Interstage Application Server チューニングガイド
目次 索引 前ページ次ページ

第7章 JDK/JREのチューニング> 7.2 FJVM

7.2.2 New世代領域サイズ自動調整機能

 本節では、FJVMで実装しているNew世代領域サイズ自動調整機能について説明します。

 なお、実行モードが64ビットモードのFJVMは、New世代領域サイズ自動調整機能を提供していません。

■New世代領域サイズ自動調整機能

 FJVMでは、富士通独自技術により、JavaヒープのNew世代領域のサイズを自動的に調整および最適化する機能を実装しています。この機能を、New世代領域サイズ自動調整機能(以降、自動調整機能と略する)といいます。

■New世代領域サイズ自動調整機能が有効となる条件

 自動調整機能は、“メモリ割り当てプールの最大サイズ”が図1に示す値の範囲内である場合に有効となります。("メモリ割り当てプールの最大サイズ"は、"-Xmx"オプションで指定できます。)
 “メモリ割り当てプールの最大サイズ”が図1で示す範囲よりも大きな値である場合は、FJVM起動時に図2のメッセージが標準出力へ出力され、自動調整機能は停止状態となります。
自動調整機能が停止状態となった場合は、New世代領域の大きさに対する自動調整処理は行なわれず、表1の注1で示すオプションに関する制御処理を除き、Java HotSpot Server VMと同じ処理方法でNew世代領域の大きさが制御されるようになります。

[図1 自動調整機能が有効となるメモリ割り当てプールの最大サイズ]

Windows(R) 2000の場合

JDK/JRE 1.3: 950MB以下
JDK/JRE 1.4: 920MB以下

Windows Server(R) 2003、またはWindows(R) XP場合

JDK/JRE 1.3: 800MB以下
JDK/JRE 1.4: 700MB以下

JDK/JRE 1.3: 2448MB以下
JDK/JRE 1.4: 2340MB以下

JDK/JRE 1.4: 1600MB以下

[図2 自動調整機能停止時に出力されるメッセージ]

JDK/JRE 1.3の場合:Heap too large for dynamic eden: using static split eden
JDK/JRE 1.4の場合:Heap too large for dynamic eden: using static eden

■New世代領域サイズ自動調整機能で無効となるオプション

 自動調整機能が有効な場合、New世代領域の大きさに関する値が自動的に調整・最適化されるため、表1の各オプションへの指定値は無効となります。
 なお、実行モードが64ビットモードのFJVMでは自動調整機能を提供していないため、Java HotSpot Server VMと同様、表1の各オプションへの指定値は有効となります。

[表1 自動調整機能で無効となるオプション]

オプション

オプションの機能

-XX:NewSize

New世代領域のヒープサイズを指定します。

-XX:MaxNewSize

New世代領域の最大ヒープサイズを設定します。

-XX:NewRatio

New世代領域とOld世代領域のサイズ比率を指定します。

-XX:SurvivorRatio(注1)

New世代領域を構成するEden領域とSurvivor領域のサイズ比率を指定します。

-XX:TargetSurvivorRatio(注1)

GC処理後の生存オブジェクトがSurvivor領域を占める割合を、指定したパーセンテージ値に調整します。

 図1で示す範囲よりも大きな値を"-Xmx"オプションで指定して自動調整機能が停止した場合でも、(注1)のオプションへの指定値は無効となります。

■New世代領域サイズ自動調整機能の無効化

 自動調整機能は図3のオプションを指定することで無効にすることができます。

[図3 自動調整機能を無効にするオプション]

-XX:-UseFJGC

 以下のような場合には、自動調整機能を無効にしてください。

■補足

 ユーザ空間内で使用できるメモリ量には、システムごとに異なる上限値があります。

 そして、Javaアプリケーションを実行する場合には、Javaヒープ("-Xmx"オプションで指定するメモリ割り当てプールなど)のほかに、Javaアプリケーション自身、Java VM、そしてネイティブモジュールが動作するために使用するメモリ領域も必要です。

 そのため、ユーザ空間内で使用できるメモリ量の上限から、Javaアプリケーション自身、Java VM、そしてネイティブモジュールが使用するメモリ量などを差し引いた値がJavaヒープとして使用できる上限となります。

 “-Xmx"オプションなどにより、その上限を超える値をJavaヒープの大きさとして指定した場合、Java VMは図4のメッセージを出力し、Javaアプリケーションの実行を中止します。
また、自動調整機能が有効な場合には、メモリ割り当てプールと自動調整機能用の作業域が連続域として確保できない場合にも、Java VMは図4のメッセージを出力し、Javaアプリケーションの実行を中止します。

[図4 Javaヒープなどが確保できない場合のメッセージ]

Error occurred during initialization of VM
Could not reserve enough space for object heap


 このメッセージが出力された場合は、Javaヒープを小さくするチューニングを行ってください。


目次 索引 前ページ次ページ

Copyright 20078 FUJITSU LIMITED