Eclipse内存分析器 - 尝试获取堆转储时出错
问题描述:
我正在尝试使用Eclipse内存分析器工具(MAT)获取堆转储。我运行了Weblogic 10.3应用程序服务器。这是一个安装了32位Java的Windows XP操作系统。当我尝试使用MAT获取堆运行Weblogic进程的堆转储时,出现以下错误:Eclipse内存分析器 - 尝试获取堆转储时出错
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)
任何帮助表示赞赏。
感谢, 希德
答
有一两件事你可以尝试使用jmap
保存转储和MAT打开它。
使用jps
来获取进程ID(PID)。
jmap -dump:live,format=b,file=myfile.hprof <processid-from-above>
感谢您的回复。但jmap在Windows上不起作用。我尝试过使用jConsole,但即使这样也会出现问题。有没有其他方法可以获得实时堆转储? – Sid 2011-05-18 20:56:15
您可以尝试VisualVM或jVisualVM。一个来自Java,另一个是单独下载。 – karmakaze 2011-05-18 21:07:40
为了将来的参考,JMap可以在Windows中工作,并包含在JDK> 1.5(我认为)中。您需要安装JDK,而不仅仅是JRE(JDK是“开发工具包”并且有额外的工具)。然后,您必须导航到JDK安装的'bin'以运行'jmap'。 – Ben 2012-01-12 02:45:57