我正在尝试分析从遇到内存问题的 java 进程中获取的堆转储。转储是使用 jmap 获取的。我在转储文件上使用 jhat - 我得到
java.io.IOException: Unrecognized magic number: 169897589
at com.sun.tools.hat.internal.parser.Reader.readFile(Reader.java:94)
at com.sun.tools.hat.Main.main(Main.java:159)
jdk 1.6和1.7都给出相同的错误。我在 Windows 计算机上本地运行 jhat(将转储文件复制到 后),转储文件是在 Linux 服务器上获取的。
有什么想法我做错了吗?
如果您查看com.sun.tools.hat.internal.parser.Reader的源代码,您会发现它正在寻找幻数0x4a415641。
该值用于帮助识别有效的堆转储文件。jmap应将此值附加为其创建的任何堆转储文件的前四个字节。
我建议在十六进制编辑器中打开堆转储并检查前四个字节是否为0x4a415641. 在 Linux 和 Windows 计算机上检查该文件。传输文件时,文件可能已损坏。
| 归档时间: |
|
| 查看次数: |
5440 次 |
| 最近记录: |