我正在尝试使用Eclipse Memory Analyzer Tool(MAT)获取堆转储。我正在运行Weblogic 10.3 app服务器。这是一个安装了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)
感谢任何帮助。
谢谢, SID
答案 0 :(得分:2)
您可以尝试的一件事是使用jmap
保存转储并在MAT中打开它。
使用jps
获取进程ID(pid)。
jmap -dump:live,format=b,file=myfile.hprof <processid-from-above>
答案 1 :(得分:1)
我在Windows上遇到了同样的问题,我通过以管理员身份打开cmd.exe
得以解决。