想分析烫发内容。因此,尝试使用该实用程序打印正在运行的 JVM 的字符串文字池(此处提供实用程序,来自如何分析 PermGen 内容?)
但我收到了这个错误:
正在附加到进程 ID 8980,请稍候... 附加到进程时出错:尝试连接到调试服务器时超时(请启动 SwDbgSrv.exe)。
知道如何SwDbgSrv.exe
在 Windows 7 中启动吗?
想分析烫发内容。因此,尝试使用该实用程序打印正在运行的 JVM 的字符串文字池(此处提供实用程序,来自如何分析 PermGen 内容?)
但我收到了这个错误:
正在附加到进程 ID 8980,请稍候... 附加到进程时出错:尝试连接到调试服务器时超时(请启动 SwDbgSrv.exe)。
知道如何SwDbgSrv.exe
在 Windows 7 中启动吗?
您可以通过运行 jsadebugd 将调试守护程序附加到您的 Java 程序。然后您可以运行 HotSpot Serviceability Agent GUI:
java -cp %JAVA_HOME%\lib\sa-jdi.jar sun.jvm.hotspot.HSDB
和文件-> 连接到调试服务器-> 本地主机。虽然这不是所有字符串文字的编程转储,但您将能够探索有关您的过程的更多信息。
所以我在尝试使用dumpclass.jar时也遇到了这个问题,这也给了我这个错误,我认为这是因为你PrintStringTable
和 DumpClass 都依赖于相同的底层jar/tool/system/framework/whatever
调用sa-jdi.jar
它做了什么,我不知道,它的一个功能是花费我一生的时间来弄清楚如何安装......
无论如何,在阅读了所有关于它的 2(!)StackOverflow 问题后,我可以告诉我,该版本与 java 1.6 SDK 一起分发(不是 JRE,它没有随 JRE 一起提供 - 哦,你还不知道,为什么?) 依赖于这个叫做SwDbgSrv.exe
which 的东西,我不知道那是什么,但你只需要知道随 java 1.7 sdk 分发的版本(同样是 SDK 不是 JRE)不使用SwDbgSrv.exe
.
那么最终这一切意味着什么?好吧,这意味着如果您通过谷歌搜索获得 sa-jdi.jar,那么您将登陆此站点:http ://www.java2s.com/Code/Jar/s/Downloadsajdijar.htm ,它具有 1.6 版本需要 SwDbgSrv.exe 的 jar
这意味着,如果您使用的是依赖于的工具,sa-jdi.jar
那么您肯定希望获得不使用的工具,SwDbgSrv.exe
这意味着使用 java 1.7 sdk,而不是 Java 1.6 JRE/SDK,因为1.7 sdk 自带的sa-jdi.jar 不用SwDbgSrv.exe
,是捆绑的!它将特别位于java\jdk1.7.0_80\lib\
文件夹中 - 至少在 Windows 上。绝对确保应用程序
那么如何解决这个问题:下载 java 1.7 sdk 并使用捆绑的 sa-jdi.jar。它不需要SwDbgSrv.exe
不要sa-jdi.jar
从随机网站随机下载。
我想这在技术上是一个非答案,因为我不知道如何SwDbgSrv.exe
在 Windows 7 中开始:/