您可以从 IBM PHD java 堆转储中提取字符串的值吗?
Posted
技术标签:
【中文标题】您可以从 IBM PHD java 堆转储中提取字符串的值吗?【英文标题】:Can you extract the value of strings from an IBM PHD java heap dump? 【发布时间】:2010-12-06 12:44:21 【问题描述】:我有一个来自 IBM jvm 的 PHD 格式堆转储,我希望检查一些字符串的值。使用 Sun JVM 的二进制 hprof 转储,这是可能的,但我无法从 IBM 转储中恢复此信息。
我试过了:
-
Eclipse 内存分析器 (0.8.0.200906170940) 和 IBM 的 DTFJ 门户堆转储读取器 (1.3.0.200903241644)
IBM Support Assistant (3.1.0.00) with Memory Dump Diagnostic for Java (2.0.0.3b)
在转储文件上运行“字符串”
使用 mdd4j (2.0.0.3b) 中的 svcdump.jar 中的 com.ibm.jvm.ras.findroots.PrintHeapdump 转换为文本转储
在 Eclipse 内存分析器中,我可以查看字符串中的 char 数组,但数组中的所有条目都为零。我也看不到任何对象的任何原始属性。
IBM 暗示他们确实将原始类型的值存储在 http://www-01.ibm.com/support/docview.wss?rs=180&uid=swg21190476
这是通过使用 Java DataOutputStream 类实现的,该类允许以可移植二进制格式输出 Java 原始数据类型。
我使用的是 Java 5.0:
2XHOSLEVEL 操作系统级别:AIX 5.3 2XHCPUS 处理器 - 3XHCPUARCH 架构:ppc64 3XHNUMCPUS 多少:8 1CIJAVAVERSION J2RE 5.0 IBM J9 2.3 AIX ppc64-64 构建 j9vmap6423-20070426 1CIVVERSION VM 内部版本 20070420_12448_BHdSMr【问题讨论】:
【参考方案1】:http://www.java-doc.de/tag/ibm/
*.phd 不包含值。这是一种“便携式”格式。要查看值,您需要生成更大文件的完整系统转储。
【讨论】:
以上是关于您可以从 IBM PHD java 堆转储中提取字符串的值吗?的主要内容,如果未能解决你的问题,请参考以下文章