java - 在本地分析独立 Java 应用程序的线程

标签 java windows multithreading monitoring

尊敬的专家,

我有一个独立的java应用程序,想要监视它创建的线程。我计划使用 JConsole 或 JVisualVM 等工具。但是,我无法将这些工具本地连接到我的 Java 应用程序。

我使用的是 Windows 机器。 JConsole和Java程序在本地运行。我尝试使用以下 JMV 参数运行 Java 应用程序,但没有成功:

java -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.ssl=false    -Dcom.sun.management.jmxremote.authenticate=false LinkedListTest

当我尝试使用 JConsole 进行连接时,我的进程 ID 呈灰色并显示以下消息:

  • 注意:此进程未启用管理代理

我认为我应该能够将 JConsole 连接到独立的 java 应用程序。我在这里缺少什么想法

感谢和问候

最佳答案

感谢您的投入。我能够解决该问题,详细信息如下:

正如 @Holger 提到的,JConsole 和 JVisualVM 都可以连接到运行的本地 Java 应用程序,而无需任何 JMX 参数。我面临的问题是特定于机器的。我重新启动机器并删除了以下目录:

%TMP%\hsperfdata_User.Name

(我无法在不重新启动的情况下删除此目录)

重新启动 JConsole/JVisualVM 并能够使用进程 ID 连接到本地 java 进程。 事实上,JVisualVM 的使用让我找到了这个修复方法。在启动 JVisualVM 时,我收到一条错误消息,指出无法监视本地进程/应用程序之类的内容。该消息有一个链接到 Troubleshooting guide 。我正在复制相关片段:

Local Applications Cannot Be Monitored (Error Dialog On Startup)

Description: An error dialog saying that local applications cannot be monitored is shown >immediately after VisualVM startup. Locally running Java applications are displayed as Application> (pid ###).

Resolution: This can happen on Windows systems if the username contains capitalized letters. In >this case, username is UserName but the jvmstat directory created by JDK is >%TMP%\hsperfdata_username. To workaround the problem, exit all Java applications, delete the >%TMP%\hsperfdata_username directory and create new %TMP%\hsperfdata_UserName directory.

但是,在我的机器上目录具有以下格式:

%TMP%\hsperfdata_User.Name

所以,我的建议是: -检查上述目录的名称是否存在驼峰式大小写用户名 - 如果没有,请按照故障排除指南中的步骤操作 -如果问题仍然存在,请删除该目录(可能需要重新启动计算机,就像我的情况一样) - 重新启动JConsole/JVisualVM

希望问题能够得到解决。

感谢和问候

关于java - 在本地分析独立 Java 应用程序的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21258087/

相关文章:

javascript - 光学变焦禁用

windows - 通过 powershell v3.0 启用 ssl 连接 filezilla

c - `pthread_mutex_trylock` 两个线程同时调用时阻塞

c# - WPF 应用程序卡住 Windows 7

c# - 如何使用扩展验证证书以编程方式签署 HCK 提交

java - 与我的正则表达式匹配时出错

java - 在android中以编程方式将apk文件推送到assets文件夹中

java - 在 liferay 7 中的自定义主题内创建一个 portlet

c - OS X asl 日志记录 : how to re-direct messages of multi-threaded project into a single file

java - 检查数组是否为空时出现 NullPointerException