1

想分析烫发内容。因此,尝试使用该实用程序打印正在运行的 JVM 的字符串文字池(此处提供实用程序,来自如何分析 PermGen 内容?

但我收到了这个错误:

正在附加到进程 ID 8980,请稍候... 附加到进程时出错:尝试连接到调试服务器时超时(请启动 SwDbgSrv.exe)。

知道如何SwDbgSrv.exe在 Windows 7 中启动吗?

4

2 回答 2

0

您可以通过运行 jsadebugd 将调试守护程序附加到您的 Java 程序。然后您可以运行 HotSpot Serviceability Agent GUI:

java -cp %JAVA_HOME%\lib\sa-jdi.jar sun.jvm.hotspot.HSDB

和文件-> 连接到调试服务器-> 本地主机。虽然这不是所有字符串文字的编程转储,但您将能够探索有关您的过程的更多信息。

于 2012-07-20T20:59:26.480 回答
0

所以我在尝试使用dumpclass.jar时也遇到了这个问题,这也给了我这个错误,我认为这是因为你PrintStringTable和 DumpClass 都依赖于相同的底层jar/tool/system/framework/whatever调用sa-jdi.jar

它做了什么,我不知道,它的一个功能是花费我一生的时间来弄清楚如何安装......

无论如何,在阅读了所有关于它的 2(!)StackOverflow 问题后,我可以告诉我,该版本与 java 1.6 SDK 一起分发(不是 JRE,它没有随 JRE 一起提供 - 哦,你还不知道,为什么?) 依赖于这个叫做SwDbgSrv.exewhich 的东西,我不知道那是什么,但你只需要知道随 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 中开始:/

于 2020-10-12T16:32:37.907 回答