エラー・ログには、問題の解決に役立つメッセージが含まれています。
これらのメッセージには、単に情報を示しているのみで、問題を示しているわけではないものも含まれています。
ログ・ファイルを見つけるには、Memory Analyzer のインストール先の製品の資料を参照してください。エラー・ログに繰り返し記録されないようにするために、これらのメッセージの一部は複数回記録されると、それ以降は抑止されます。
- 1,680 バイトを使用している 37 ID がパージされました
- このメッセージは、初期ガーベッジ・コレクションのステップによって削除されたオブジェクトとクラスの数を示しています。
この数が多すぎる場合は、ダンプでいくつかのガーベッジ・コレクション・ルートが欠落している可能性があります。
- 4,998 ID、4,519 オブジェクト、479 クラスを検出しました
- このメッセージは、ダンプの初期スキャンで発見されたオブジェクト、クラス、および ID の数を示しています。
ID の数は、すべてのオブジェクトとクラスの合計です。
- 1,512 ルートで DTFJ ルート・サポートを使用しています
- ダンプ内に正確なルート情報を持つ IBM® SDK によって、ダンプが生成されます。
例えば、IBM SDK for Java™ 6、サービス・リフレッシュ 1 以降です。
- 351 ルートで標準的なガーベッジ・コレクション・ルート・サポートを使用しています
- ダンプ内にルート情報を持たない比較的古い IBM SDK によって、ダンプが生成されます。
DTFJ アダプターはルート・セットを判別しようとしますが、この判別は不正確である可能性があります。
余分なエラー・ルートが特定される場合があり、その他のルートは除外されます。
- DTFJ ルートが見つかりません
- ガーベッジ・コレクション・ルート情報を持たない比較的古い IBM SDK によって、ダンプが生成されます。
DTFJ アダプターはルート・セットを判別しようとしますが、この判別は不正確である可能性があります。
余分なエラー・ルートが特定される場合があり、その他のルートは除外されます。
- スレッド 0x1005c558 のネイティブ・スレッドが見つからないため、標準的なガーベッジ・コレクション・ルートは欠落している可能性があります
- Linux または AIX® などの一部のプラットフォームでは、IBM SDK ダンプでネイティブ・スレッド情報が欠落している場合があります。
DTFJ ルート情報を入手できない場合、DTFJ アダプターは、保守的なガーベッジ・コレクション・プロセス中にスタックをスキャンして、可能性のあるガーベッジ・コレクション・ルートを判別しようとします。ネイティブ・スタックを使用できないため、これらのスタックのガーベッジ・コレクション・ルートは見つかりません。
つまり、一部のオブジェクトが Memory Analyzer の初期処理によってパージされている可能性があり、それらはヒープ・ダンプ・ビューに表示されません。多数のオブジェクト、あるいは大量のデータがこのような方法で破棄された場合、結果は誤解を招く可能性があります。
- アウトバウンド参照の検索中に、アドレス 0x1005af48 のタイプ java/io/ExpiringCache$Entry のオブジェクト内にあるタイプ Ljava/lang/String; のフィールド java/io/ExpiringCache$Entry.val で、タイプ Corrupt クラスの無効なオブジェクト・フィールド参照 0x1007e060 が見つかりました
- オブジェクトのアウトバウンド参照を読み取っているときに、フィールドの読み取りでエラーが発生しました。参照されているオブジェクトはヒープの初期スキャンで検出されないため、ヒープ・ダンプ・ビューに表示されません。参照するオブジェクト自体がガーベッジである、つまり、ガーベッジ・コレクション・ルートから到達不能である可能性があります。
この場合、エラーは無視できます。参照するオブジェクトが有効な場合、オブジェクトはヒープ・ダンプ・ビューに表示されます。
しかし、アウトバウンド参照の 1 つが無効であるため、表示できません。この問題は、ヒープが不整合な状態であったときにダンプが実行された場合に生じることがあります。
- アウトバウンド参照の検索中に、アドレス 0x11445d90 のタイプ [Lcom/ibm/jtc/test/jltf/WorkUnit の長さが 64 の配列内の索引 12 で、タイプ Corrupt クラスの無効な配列エレメント参照 0x115c4ad0 が見つかりました
- オブジェクト配列オブジェクトのアウトバウンド参照を読み取っているときに、配列エレメントの読み取りでエラーが発生しました。
参照されているオブジェクトはヒープの初期スキャンで検出されなかったため、ヒープ・ダンプ・ビューに表示されません。参照する配列自体がガーベッジである、つまり、ガーベッジ・コレクション・ルートから到達不能である可能性があります。
この場合、エラーは無視できます。参照する配列が有効な場合、配列はヒープ・ダンプ・ビューに表示されます。
しかし、配列エレメントの 1 つが無効であるため、表示できません。この問題は、ヒープが不整合な状態であったときにダンプが実行された場合に生じることがあります。
- 24,215 反復メッセージが抑止されました
- 少なくとも 1 つのタイプの複数のメッセージが存在します。これらのメッセージの一部は、ログ・サイズを削減するために抑止されました。例えば、ダンプ・オプションを変更したり、別の方法でダンプを生成したりすることで、ログ内のエラーを削減することができます。
この処理で、抑止対象のメッセージ数を削減することもできます。
- 131,072 バイトの基準レベルと比べて、予想外に大きいコンパイル済みコード・セクション (8,320,472 バイトの 0x75a0761c) が private java/lang/Class.checkMemberAccess(I)V で見つかりました。このクラスではこのセクション・サイズは無視されます。
- ダンプに、メソッドのコンパイル済みコード・サイズに関する不正確な情報が含まれています。
クラス・サイズの算出時に、このメソッドのサイズは無視されます。
IBM SDK の後のバージョンでは、より正確なサイズ情報がダンプに生成される可能性があります。