将 JConsole 连接到另一个用户的进程

Connect JConsole to another user's process

我有一个托管 JVM 的 Win64 C++ 程序。正常执行时,我可以从 JConsole 连接到它并查看统计信息。该进程出现在本地进程列表中。

当同一程序 运行 作为另一个用户(来自已保存凭据的计划作业)时,该进程不在列表中。我在机器上有管理员权限,不确定它是否重要。

Java 在 TEMP 目录中创建一个 hsperfdata_xxx 目录。其中保存了 jvm 中进程 运行 的信息。只有当 jvm 运行 jconsole 使用与您要检查的 java 应用程序相同的目录时,它们才能 看到 彼此。
我假设其他用户有其他 TEMP 目录,这就是为什么您的 jconsole 看不到其他应用程序的原因。
我建议你为两个用户设置相同的 TEMP 目录。
我在一个用户的多个 java 安装中遇到了这个问题。

在任务管理器中找到进程的PID,然后运行

"PATH_TO_JDK_BIN\jconsole" PID