【问题标题】:Analyze stand alone Java Application locally for threads在本地分析独立 Java 应用程序的线程
【发布时间】:2014-01-21 12:25:02
【问题描述】:

尊敬的专家,

我有一个独立的 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 应用程序。任何想法我在这里想念的东西

感谢和问候

【问题讨论】:

  • 试试这个:-Dcom.sun.management.jmxremote
  • 感谢@edhamed 的建议。这没有帮助:java -Dcom.sun.management.jmxremote LinkedListTest
  • JVisualVM 对于本地 Java 应用程序不需要这些命令行选项。如果管理代理尚未运行,它将通过附加 API 启动管理代理本身。只需启动 JVisualVM 并在提供的列表中双击右侧的 JVM。
  • JConsole 需要 -D ...正如@Holger 所说,JVisualVM 不需要。您可能还有其他问题。

标签: java windows multithreading monitoring


【解决方案1】:

感谢您的意见。我能够解决问题,详情如下:

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

%TMP%\hsperfdata_User.Name

(如果不重新启动,我无法删除此目录)

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

无法监控本地应用程序(启动时出现错误对话框)

描述:在 VisualVM 启动后立即显示一个错误对话框,说明无法监视本地应用程序。本地运行的 Java 应用程序显示为 Application> (pid ###)。

解决方案:如果用户名包含大写字母,则在 Windows 系统上可能会发生这种情况。在>这种情况下,用户名是UserName,但JDK创建的jvmstat目录是>%TMP%\hsperfdata_username。要解决此问题,请退出所有 Java 应用程序,删除 >%TMP%\hsperfdata_username 目录并创建新的 %TMP%\hsperfdata_UserName 目录。

但是,我机器上的目录格式如下:

%TMP%\hsperfdata_User.Name

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

希望问题能得到解决。

感谢和问候

【讨论】:

  • 感谢您对删除文件夹的解释!!那解决了我的问题!但是,您不必重新启动系统。只需确保 Eclipse 没有运行并且任务管理器中没有 Java 进程(操作系统:Windows 7)。
  • 感谢@mrbela 的观察。如果应用程序或进程正在使用文件或文件夹,Windows 将不允许删除。因此,关闭/退出此类应用程序和进程可能有助于避免 Windows 重新启动。谢谢和问候
猜你喜欢
  • 2017-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-15
  • 2018-02-24
  • 1970-01-01
  • 2011-08-30
  • 1970-01-01
相关资源
最近更新 更多