java - JAVA:从 Heapdump 读取 HashMap 对象内容
问题描述
我需要更深入地分析 OOM,并且需要找出哪些对象导致 Oracle 的 T4CPreparedStatement JDBC 层内部的 OOM。因此,我正在寻找 HashMap (java.util.Hashtable$Entry[]) 中的内容。
- 这可能来自 HeapDump 吗?
- 这可以通过 JMX 连接实现吗?
我的 HeapDump(*.phd 文件)是由 Websphere Application Server 在 OOM 期间自动创建的。
PS:可能它可以在带有 IBM Extensions 的 Eclipse Memory Analyzer Tool 中完成,但是如何?
解决方案
PHD 文件没有原始字段值或原始数组内容,因此您最多只能在 HashMap 中看到键和值的类型。
哈希映射集合查询将失败,并显示:“转储格式 'DTFJ-PHD' 不支持检查 'Hash Entries'。”
“按类显示对象”可能有助于查看持有哪些类型的东西:
班级名称 | 对象 | 浅堆 -------------------------------------------------- ---------------- 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 | | '- 总计:5 个条目 | | -------------------------------------------------- ----------------
真的你需要一个系统转储。
推荐阅读
- javascript - Vuejs Option. Get an ID from a selected item
- android - 应用未运行时如何发送 fcm 通知
- c++ - Fstream 在写入尝试后关闭且没有错误
- android - RecyclerView:没有附加适配器跳过布局(TabbedActivity + Firestore)
- spring-cloud-sleuth - spring sleuth bag - 支持 sleuth 版本 #2
- java - 如何在 Java 中模拟 clock.millis()
- dynamic-programming - Coin Chane - 动态规划 - 如何从 DP 表中读取所有解决方案
- apache-kafka - Kafka - 基于时间戳消费消息
- c++ - 如何通过柯南和 CMake 查找 pkg-config 的 .pc 文件
- javascript - 使用 java 脚本对象(sql、express、react)的存储过程