我有一个托管 JVM 的 Win64 C++ 程序。正常执行时,我可以从 JConsole 连接到它并查看统计信息。该进程出现在本地进程列表中。
当同一个程序以另一个用户身份运行时(来自已保存凭据的计划作业),该进程不在列表中。我在机器上拥有管理员权限,不确定是否重要。
Java 在 TEMP 目录中创建一个hsperfdata_xxx
目录。在其中保存了在 jvm 中运行的进程的信息。只有当运行 jconsole 的 jvm 使用与您要检查的 java 应用程序相同的目录时,它们才能相互看到。
我假设另一个用户有另一个 TEMP 目录,这就是你的 jconsole 看不到另一个应用程序的原因。
我建议您为两个用户设置相同的 TEMP 目录。
我在为一个用户安装多个 java 时遇到了这个问题。
在任务管理器中找到进程的PID,然后运行
"PATH_TO_JDK_BIN\jconsole" PID