您可以从 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 堆转储中提取字符串的值吗?的主要内容,如果未能解决你的问题,请参考以下文章

了解 Java 堆转储

从 Java 堆转储中获取已使用和释放的内存

使用 JVisualVM 从 Java 中的远程应用程序获取堆转储

如何从核心转储文件中提取 AT_EXECFN

Java堆转储在Google App引擎标准环境中?

捕获系统堆转储数据关闭