Hitachi

 Hitachi Application Server V10 定義リファレンスUNIX®用)


8.2 exmemexcludeclass.cfg

Explicitヒープへ移動させたくないオブジェクトのクラスを指定する設定ファイルのことです。この設定ファイルを明示管理ヒープ機能適用除外設定ファイルといいます。

説明

Explicitヒープへ移動させたくないオブジェクトのクラスを指定します。この設定ファイルに指定したクラスのオブジェクトは、GCが発生しても、Explicitヒープへ移動しません。昇格するタイミングでTenured領域へ移動します。

明示管理ヒープ機能適用除外設定ファイルには、システムで提供しているファイルがあります。明示管理ヒープ機能適用除外クラス指定機能を有効にすると、システムで提供している設定ファイル(sysexmemexcludeclass.cfg)が使用されます。システムで提供している設定ファイルのほかに、明示管理ヒープ機能の適用対象から除外するクラスを追加したい場合は、格納先に示すファイルパスにある設定ファイルを更新するか、または新たな設定ファイルを作成してください。なお、新たに設定ファイルを作成した場合は、-XX:ExplicitMemoryExcludeClassListFileオプションにファイルパスを指定してください。

システムで提供している設定ファイルのファイルパスを次に示します。

JDKのインストールディレクトリー/jre/lib/explicitmemory/sysexmemexcludeclass.cfg

この設定ファイルに指定したクラスに対して適用除外設定を無効にする制御は、明示管理ヒープ機能適用除外無効設定ファイルで指定できます。明示管理ヒープ機能適用除外無効設定ファイルの指定は、この設定ファイルの指定よりも優先されます。

パッケージ「com.sample」を例に、各設定ファイルの指定と明示管理ヒープ機能の適用範囲について説明します。パッケージ「com.sample」には、ClassAとClassBの2つのクラスがあります。各設定ファイルを次のように指定します。

明示管理ヒープ機能適用除外設定ファイルの指定例
com.sample.*
明示管理ヒープ機能適用除外無効設定ファイルの指定例
com.sample.ClassB

明示管理ヒープ機能適用除外設定ファイルの指定には、ClassAとClassBの両方が含まれています。しかし、明示管理ヒープ機能適用除外無効設定ファイルの指定が優先されるため、次の図のように、明示管理ヒープ機能の適用が除外されるのはClassAだけとなり、ClassBには明示管理ヒープ機能が適用されます。

[図データ]

書式

配列型以外の場合
指定したクラスの完全修飾クラス名#コメント
...
指定したクラスの完全修飾クラス名
配列型の場合
配列の次元数分の"["L指定したクラスの完全修飾クラス名;
注※

多次元配列のときは、「[」を次元数分続けて指定します。3次元配列の場合は「[[[」となります。

(例)aaa.bbb.Myclassクラスの1次元配列の場合

[Laaa.bbb.Myclass;

この設定ファイルの記述規則を次に示します。

格納先

JDKのインストールディレクトリー/usrconf/exmemexcludeclass.cfg

記述例

ここで説明する記述例は、パッケージ名が「com.sample」で、次の図に示すクラス構造とします。

図8‒1 クラス構造の例

[図データ]

完全修飾クラス名で指定する場合

完全修飾クラス名で指定する場合の明示管理ヒープ機能適用除外設定ファイルの記述例を次に示します。

com.sample.aaa.ClassA
com.sample.aaa.ClassC
com.sample.ddd.ClassD

この例では、ClassAクラス、ClassCクラス、およびClassDクラスのオブジェクトがTenured領域へ移動します。

クラス名を省略して指定する場合

クラス名を省略して指定する場合の明示管理ヒープ機能適用除外設定ファイル、および明示管理ヒープ機能適用除外無効設定ファイルの記述例を次に示します。

明示管理ヒープ機能適用除外設定ファイルの記述例
com.sample.*
明示管理ヒープ機能適用除外無効設定ファイルの記述例
com.sample.aaa.ClassB
com.sample.ddd.ClassE

この例では、明示管理ヒープ機能適用除外設定ファイルの記述から、同一パッケージ内のクラスだけでなく、サブパッケージに存在するクラスも含めすべてのクラスがTenured領域への移動対象となります。しかし、明示管理ヒープ機能適用除外無効設定ファイルの記述から、ClassBクラスとClassEクラスのオブジェクトがExplicitメモリーブロックへの移動対象となります。このため、ClassAクラス、ClassCクラス、およびClassDクラスのオブジェクトがTenured領域へ移動します。

完全修飾クラス名で指定するか、またはクラス名を省略して指定するかは、設定ファイルの記述量が少ない方で指定することをお勧めします。記述例はどちらも同じ制御となります。この場合は、クラス名を省略して指定する方が望ましい記述です。