我正在尝试运行和调试来自 sun.jvm.hotspot.tools 和 sun.jvm.hotspot.utilities(如 JMap.java)的实用程序,以便更好地了解正在发生的事情。
不幸的是,我很早就遇到了以下错误消息,甚至没有进行很多调试:
Attaching to process ID 5144, please wait...
Error attaching to process: Timed out while attempting to connect to debug server (please start SwDbgSrv.exe)
似乎无论出于何种原因,这些工具都试图连接到在端口 27000 上运行的“调试服务器”。
在 sun.jvm.hotspot.tools.HeapDumer.java 的文档中,我发现了以下内容:
JDK jmap 实用程序使用此工具将目标进程/核心的堆转储为 HPROF 二进制文件。如果需要,它也可以用作独立工具。
所以我(也许天真地)假设 jmap.exe 以某种方式使用它,但我从未遇到过使用 jmap 创建堆转储的此类问题。我从来不需要先启动另一个进程。
有什么想法可以直接从我的开发环境运行所有这些工具吗?
谢谢