JAVA: 从 Heapdump 读取 HashMap 对象内容

JAVA: Read HashMap object Content from Heapdump

我需要更深入地分析一个 OOM,需要找出哪些对象导致了来自 oracle 的 T4CPreparedStatement JDBC 层内部的 OOM。因此,我正在寻找 HashMap 中的内容 (java.util.Hashtable$Entry[]).

我的 HeapDump(*.phd 文件)是在 OOM 期间由 Websphere Application Server 自动创建的。

PS:也许可以在 Eclipse 内存分析器工具中使用 IBM Extensions 来完成,但是怎么做呢?

PHD 文件没有原始字段值或原始数组内容,因此您充其量只能在 HashMap 中看到键和值的类型。

哈希映射集合查询将失败并显示:“转储格式 'DTFJ-PHD' 不支持检查 'Hash Entries'。”

'Show objects by class' 可能有助于了解举办的活动种类:

    Class Name                               | Objects | Shallow Heap
    ------------------------------------------------------------------
    java.util.HashMap                        |       1 |           40
    |- java.lang.Class                       |       1 |          160
    |- java.util.HashMap$Node[]              |       1 |          136
    |  |- java.util.HashMap$Node             |      10 |          240
    |  |  |- sun.misc.URLClassPath$JarLoader |       9 |          504
    |  |  |- java.lang.Class                 |       1 |          160
    |  |  |- java.lang.String                |      10 |          160
    |  |  |- java.util.HashMap$Node          |       4 |           96
    |  |  |- sun.misc.URLClassPath$FileLoader|       1 |           24
    |  |  '- Total: 5 entries                |         |             
    ------------------------------------------------------------------

你真的需要一个系统转储。