2011-05-18 76 views
0

我正在嘗試使用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) 

任何幫助表示讚賞。

感謝, 希德

回答

2

有一兩件事你可以嘗試使用jmap保存轉儲和MAT打開它。

使用jps來獲取進程ID(PID)。

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

感謝您的回覆。但jmap在Windows上不起作用。我嘗試過使用jConsole,但即使這樣也會出現問題。有沒有其他方法可以獲得實時堆轉儲? – Sid 2011-05-18 20:56:15

+1

您可以嘗試VisualVM或jVisualVM。一個來自Java,另一個是單獨下載。 – karmakaze 2011-05-18 21:07:40

+1

爲了將來的參考,JMap可以在Windows中工作,幷包含在JDK> 1.5(我認爲)中。您需要安裝JDK,而不僅僅是JRE(JDK是「開發工具包」並且有額外的工具)。然後,您必須導航到JDK安裝的'bin'以運行'jmap'。 – Ben 2012-01-12 02:45:57

相關問題