ここでは,ログ出力レベルにdebugを指定した場合に出力される内容をイベントごとに説明します。
Explicitメモリブロックを明示解放する場合に,Explicitメモリブロック内のオブジェクトが明示解放対象のExplicitメモリブロック以外から参照されているとき,そのオブジェクトはJavaヒープに移動します。このログでは,Javaヒープに移動したオブジェクトとその参照元のオブジェクトの情報が出力されます。
Explicitメモリブロックの明示解放処理で,Javaヒープへのオブジェクトの移動が発生した場合です。
[EDO][eid=<EID>: Reference to <REFED_NAME>(<REFED_PTR>), total <R_SIZE>] |
注 明示解放対象のExplicitメモリブロック以外から参照されているオブジェクトごとに出力されます。
「(b) 出力形式」で示した各項目について説明します。
表5-52 出力項目(Explicitメモリブロックの明示解放によるJavaヒープへのオブジェクト移動)
出力項目 | 出力内容 | 意味 |
---|---|---|
<EID> | <const> | Explicitメモリブロックの明示解放処理時に,明示解放対象のExplicitヒープ以外から参照されているオブジェクトを含むExplicitメモリブロックのIDが出力されます。 |
<REFED_NAME> | <letters> | Explicitメモリブロックの明示解放処理時に,明示解放対象のExplicitヒープ以外のオブジェクト(<REF_NAME>(<REF_PTR>)で示すオブジェクト)から参照されているオブジェクトの完全クラス名が出力されます。 |
<REFED_PTR> | <ptr> | <REFED_NAME>が示すオブジェクトのJavaヒープへの移動前のメモリアドレスが出力されます。 |
<R_SIZE> | <const>K | <REF_NAME>(<REF_PTR>)から参照されていることによって,Javaヒープに移動することになるオブジェクトの総サイズが出力されます。<REF_NAME>(<REF_PTR>)から間接参照している,明示解放対象Explicitメモリブロック内のオブジェクトも含めた値になります※。単位はキロバイトです。 |
<REF_NAME> | <letters>|JVM | <REFED_NAME>(<REFED_PTR>)を参照しているオブジェクトの完全クラス名が出力されます。ただし,参照元がスタックやJavaVM内部の場合は,"JVM"と出力されます。 |
<REF_PTR> | <ptr> | <REF_NAME>が示すオブジェクト,スタックまたはJavaVM内部のメモリアドレスが出力されます。 |
<REF_GEN> | (eid=<EID>)|(DefNew)|(Tenured)|(JVM) | <REF_NAME>(<REF_PTR>)の属する領域または世代の名称が出力されます。Explicitメモリブロックの場合はExplicitメモリブロックのIDが出力されます。スタックやJavaVM内部から参照されている場合は"JVM"と出力されます。 |
注※ 次に示す「補足」も参照してください。
図5-9 Javaヒープに移動するオブジェクトへの参照経路が複数ある例
出力例を示します。
[EDO][eid=5: Reference to java.lang.HashMap$Entry(0x1234568), total 125K] |
この出力例では次の内容が確認できます。
新たにExplicitメモリブロックを初期化した場合の詳細な情報が出力されます。「5.11.4(1) Explicitメモリブロックの初期化」で示した出力内容に加えて,初期化処理を実行したJavaプログラムのスタックトレースが出力されます。このログは,複数行にわたって,Javaプログラムの実行と非同期に出力されます。このため,各行の間に別なログが出力されることがあります。ただし,1行中にほかのログが出力されることはありません。
Explicitメモリブロックの初期化です。
<Explicitメモリブロックの初期化の情報(verbose)>※[Thread: <TH_PTR>] |
注※ 出力項目については,「5.11.4(1) Explicitメモリブロックの初期化」を参照してください。
「(b) 出力形式」で示した各項目について説明します。
表5-53 出力項目(Explicitメモリブロックの初期化(詳細情報出力))
出力項目 | 出力内容 | 意味 |
---|---|---|
Explicitメモリブロックの初期化時の情報(vervose) | 「5.11.4(1) Explicitメモリブロックの初期化」を参照してください。 | |
<TH_PTR> | <ptr> | Explicitメモリブロックを初期化したスレッドのスレッドIDが出力されます。スレッドダンプに出力されるtidと同一です。 |
<FRAME> | <letters>.<letters> | Explicitメモリブロック初期化時のスタックトレース中の1フレームが出力されます。完全クラス名とメソッド名が"."で区切られて出力されます。 |
<SOURCE> | (<letters>:<const>)|(Native Method)|(Unknown Source) | <FRAME>で出力されたメソッドが記述されているソースファイル名と,スタックトレースと一致する行番号が出力されます。ファイル名と行番号は":"で区切られて出力されます。 ネイティブメソッドの場合は,"(Native Method)"と出力されます。 ソースファイル名が取得できない場合は,"(Unknown Source)"と出力されます。 |
出力例を示します。
[EVO]<Tue Jul 24 01:23:51 2007>[Created]["BasicExplicitMemory-2" eid=2(0x1234568)/B][Thread: 0x00035a60] |
この出力例では次の内容が確認できます。
Explicitメモリブロックの自動解放処理が起こった場合の詳細情報を出力します。「5.11.3(4) Explicitメモリブロックの自動解放処理」で示した出力内容に加えて,自動解放処理を実施したExplicitメモリブロックのEID情報を出力します。Explicitメモリブロックの自動解放処理は,オブジェクトの移動が発生しない自動解放処理,多対1の自動解放処理,および1対1の自動解放処理が実行されることがあります。このため,オブジェクトの移動が発生しなかったEID,多対1のEID,および1対1のEIDの情報を出力します。
Explicitメモリブロックの自動解放処理が起こった場合です。
[EDO][migrate:(<EID_DEL>{,<EID_DEL>}*|)/(<EID_MBF>{,<EID_MBF>}*-><EID_MAF>|)/(<EID_MIG>{,<EID_MIG>}*|)] |
「(b) 出力形式」で示した各項目について説明します。
表5-54 出力項目(Explicitメモリブロックの自動解放処理の詳細(詳細情報出力))
出力項目 | 出力内容 | 意味 |
---|---|---|
<EID_DEL> | <const> | Explicitメモリブロックの自動解放処理によって解放されるExplicitメモリブロックのうち,オブジェクトの移動が発生しなかったExplicitメモリブロックのEIDを出力します。 |
<EID_MBF> | <const> | Explicitメモリブロックの自動解放処理によって解放されるExplicitメモリブロックのうち,多対1の自動解放が起こったExplicitメモリブロックの自動解放予約される前のEIDを出力します。 |
<EID_MAF> | <const> | Explicitメモリブロックの自動解放処理によって生成されるExplicitメモリブロックのうち,多対1の自動解放によって生成されたExplicitメモリブロックのEIDを出力します。 |
<EID_MIG> | <const> | Explicitメモリブロックの自動解放処理によって解放されるExplicitメモリブロックのうち,1対1の自動解放が起こったExplicitメモリブロックのEIDを出力します。 |
出力例を示します。
[EVS]<Tue Jul 14 02:31:22 2009>[EH: 256512K->256128K(256256K/1048576K), 0.1124626 secs][E/F/D: 423/0/0][target:584K/384K/200K]¥ |
この出力例では次の内容が確認できます。