2014-03-28 116 views
2

我的需求是使用Jmap創建遠程服務器的堆內存轉儲文件。 我是這樣做的。Jmap - 連接遠程調試服務器時出錯

jmap -dump:file=remoteDump.txt,format=b 3104 

這很好,因爲3104是從我的本地機器進程的PID。 如何對遠程服務器執行相同的操作? 我試過

jmap -dump:file=remoteDump.txt,format=b 3104 54.197.228.33:8080 

但它失敗了。 我嘗試使用jsadebugd創建一個調試服務器,如下所示。 1.Started rmiregistry的

rmiregistry -J-Xbootclasspath/p:$JAVA_HOME/lib/sa-jdi.jar

2.Ran jsadebugd

>jsadebugd 11594 54.197.228.33:9009 

但第2步拋出以下錯誤:

Error attaching to process or starting server: sun.jvm.hotspot.debugger.D 
Exception: Windbg Error: WaitForEvent failed! 
     at sun.jvm.hotspot.debugger.windbg.WindbgDebuggerLocal.attach0(Na 
thod) 
     at sun.jvm.hotspot.debugger.windbg.WindbgDebuggerLocal.attach(Win 
ggerLocal.java:152) 
     at sun.jvm.hotspot.HotSpotAgent.attachDebugger(HotSpotAgent.java: 
     at sun.jvm.hotspot.HotSpotAgent.setupDebuggerWin32(HotSpotAgent.j 
) 
     at sun.jvm.hotspot.HotSpotAgent.setupDebugger(HotSpotAgent.java:3 
     at sun.jvm.hotspot.HotSpotAgent.go(HotSpotAgent.java:313) 
     at sun.jvm.hotspot.HotSpotAgent.startServer(HotSpotAgent.java:220 
     at sun.jvm.hotspot.DebugServer.run(DebugServer.java:106) 
     at sun.jvm.hotspot.DebugServer.main(DebugServer.java:45) 
     at sun.jvm.hotspot.jdi.SADebugServer.main(SADebugServer.java:55) 

幫我把它弄出來。

回答

2

你爲什麼不重視過程的原因可能是這是所有準備連接到某些debuger或其他視覺機器比你jmap運行執行。

儘量保證過程中不附加任何debuger和你連接到同一個VM。

相關問題