8.3 exmemnotexcludeclass.cfg
明示管理ヒープ機能適用除外設定ファイルに指定したクラスのうち、適用除外設定を無効にしたいクラスを指定する設定ファイルのことです。この設定ファイルを明示管理ヒープ機能適用除外無効設定ファイルといいます。
説明
明示管理ヒープ機能適用除外設定ファイルに指定したクラスのうち、適用除外設定を無効にしたいクラスを指定します。このファイルに指定したクラスのオブジェクトは、GCが発生すると、Explicitヒープへ移動します。
明示管理ヒープ機能の適用対象から除外されているクラスを無効にしたい場合は、格納先に示すファイルパスにある設定ファイルを更新するか、または新たな設定ファイルを作成してください。システムで提供している明示管理ヒープ機能適用除外設定ファイル(sysexmemexcludeclass.cfg)に指定されているクラスも設定を無効にできます。なお、新たに設定ファイルを作成した場合は、-XX:ExplicitMemoryNotExcludeClassListFileオプションにファイルパスを指定してください。
この設定ファイルの指定は、明示管理ヒープ機能適用除外設定ファイルの指定よりも優先されます。
パッケージ「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;
この設定ファイルの記述規則を次に示します。
-
クラス名は1行に1つずつ記述します。
-
1行に記述できる文字数は1,024文字までです。この文字数は空文字やコメントを含みます。1行に1,025文字以上記述すると、パースに失敗してワーニングメッセージを出力し、その行を無視して読み込み処理を続けます。
-
クラス名は、「パッケージ名.*」と指定すると省略できます。Java言語のimport宣言の「*」とは異なり、サブパッケージのクラスも対象となります。
-
行末は、改行文字(「\n」もしくは「0x0A」)または復帰文字(「\r」もしくは「0x0D」)が1文字以上続いたものとなります。
-
空白文字は、半角スペース文字(「0x20」)またはタブ文字(「\t」もしくは「0x09」)となります。なお、設定ファイルに空白文字を記述した場合は無視されます。
-
コメントは、「#」で始まり、「#」から行末までの間の文字すべてをコメントとします。
格納先
JDKのインストールディレクトリー\usrconf\exmemnotexcludeclass.cfg
記述例
ここで説明する記述例は、パッケージ名が「com.sample」で、次の図に示すクラス構造とし、明示管理ヒープ機能適用除外設定ファイルでは、クラス名を省略して指定するとします。
- 明示管理ヒープ機能適用除外設定ファイルの記述例
-
com.sample.*
- 明示管理ヒープ機能適用除外無効設定ファイルの記述例
-
com.sample.aaa.ClassB com.sample.ddd.ClassE
この例では、明示管理ヒープ機能適用除外設定ファイルの記述から、同一パッケージ内のクラスだけでなく、サブパッケージに存在するクラスも含めすべてのクラスがTenured領域への移動対象となります。しかし、明示管理ヒープ機能適用除外無効設定ファイルの記述から、ClassBクラスとClassEクラスのオブジェクトがExplicitメモリーブロックへの移動対象となります。このため、ClassAクラス、ClassCクラス、およびClassDクラスのオブジェクトがTenured領域へ移動します。
注意事項
この設定ファイルは、明示管理ヒープ機能適用除外設定ファイルに指定されたクラスの中で明示管理ヒープ機能適用除外設定を無効にするクラスを指定する設定ファイルであり、Explicitメモリーブロックへ移動するクラスを指定する設定ファイルではありません。