【问题标题】:Eclipse memory analyser - error on trying to acquire heap dumpEclipse 内存分析器 - 尝试获取堆转储时出错
【发布时间】:2011-08-28 05:07:35
【问题描述】:

我正在尝试使用 Eclipse 内存分析器工具 (MAT) 获取堆转储。我正在运行 Weblogic 10.3 应用服务器。这是一个安装了 32 位 Java 的 Windows XP 操作系统。当我尝试使用 MAT 为运行 Weblogic 的进程获取堆转储时,我收到以下错误:

Error creating heap dump. jmap exit code = 1
Exception in thread "main" java.io.IOException: Premature EOF
    at sun.tools.attach.HotSpotVirtualMachine.readInt(HotSpotVirtualMachine.java:226)
    at sun.tools.attach.WindowsVirtualMachine.execute(WindowsVirtualMachine.java:88)
    at sun.tools.attach.HotSpotVirtualMachine.executeCommand(HotSpotVirtualMachine.java:195)
    at sun.tools.attach.HotSpotVirtualMachine.dumpHeap(HotSpotVirtualMachine.java:162)
    at sun.tools.jmap.JMap.dump(JMap.java:224)
    at sun.tools.jmap.JMap.main(JMap.java:122)

Error creating heap dump. jmap exit code = 1
Exception in thread "main" java.io.IOException: Premature EOF
    at sun.tools.attach.HotSpotVirtualMachine.readInt(HotSpotVirtualMachine.java:226)
    at sun.tools.attach.WindowsVirtualMachine.execute(WindowsVirtualMachine.java:88)
    at sun.tools.attach.HotSpotVirtualMachine.executeCommand(HotSpotVirtualMachine.java:195)
    at sun.tools.attach.HotSpotVirtualMachine.dumpHeap(HotSpotVirtualMachine.java:162)
    at sun.tools.jmap.JMap.dump(JMap.java:224)
    at sun.tools.jmap.JMap.main(JMap.java:122)

感谢任何帮助。

谢谢, 席德

【问题讨论】:

    标签: java memory weblogic-10.x heap-dump


    【解决方案1】:

    您可以尝试的一件事是使用 jmap 保存转储并在 MAT 中打开它。

    使用jps 获取进程ID (pid)。

    jmap -dump:live,format=b,file=myfile.hprof <processid-from-above>
    

    【讨论】:

    • 感谢您的回复。但是 jmap 在 Windows 上不起作用。我尝试使用 jConsole,但即使这样也会出现问题。还有其他方法可以获得实时堆转储吗?
    • 你可以试试VisualVM或者jVisualVM。一个是 Java 自带的,另一个是单独下载的。
    • 供将来参考,JMap 确实可以在 Windows 中工作,并且包含在 JDK > 1.5 中(我认为)。您需要安装 JDK,而不仅仅是 JRE(JDK 是“开发工具包”并且有额外的工具)。然后您必须导航到 JDK 安装的 bin 才能运行 jmap
    • 我遇到了同样的问题。我能够使用 jmap,但我只得到了一个占用 1.3GB 内存的进程的 20mb 转储。有点不对劲。
    【解决方案2】:

    我在 Windows 上遇到了同样的问题,我以管理员身份打开 cmd.exe 解决了。

    【讨论】:

    • 我喜欢 StackOverflow 的一点。一个 9 岁的问题可以变得生动起来。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-28
    • 2012-10-07
    • 1970-01-01
    • 1970-01-01
    • 2013-06-09
    • 2015-11-09
    相关资源
    最近更新 更多