JAVA: 从 Heapdump 读取 HashMap 对象内容
JAVA: Read HashMap object Content from Heapdump
我需要更深入地分析一个 OOM,需要找出哪些对象导致了来自 oracle 的 T4CPreparedStatement JDBC 层内部的 OOM。因此,我正在寻找 HashMap 中的内容 (java.util.Hashtable$Entry[]).
- 这可能来自 HeapDump 吗?
- 这可以通过 JMX 连接实现吗?
我的 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 | |
------------------------------------------------------------------
你真的需要一个系统转储。
我需要更深入地分析一个 OOM,需要找出哪些对象导致了来自 oracle 的 T4CPreparedStatement JDBC 层内部的 OOM。因此,我正在寻找 HashMap 中的内容 (java.util.Hashtable$Entry[]).
- 这可能来自 HeapDump 吗?
- 这可以通过 JMX 连接实现吗?
我的 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 | | ------------------------------------------------------------------
你真的需要一个系统转储。