在我做了一点研究之后,似乎彼得的评论是正确的。因为JVM进程是由另一个用户启动的(NETWORK
SERVICE帐户,因为它们是由Windows服务启动的),所以它们未显示在jvisualvm中。
解决方法
由于我可以访问应用程序配置,因此找到了以下解决方法,其中涉及为目标JVM显式启用不安全的JMX:
- 添加以下JVM参数:
-Dcom.sun.management.jmxremote.port=3333-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote.authenticate=false
- 通过单击文件->添加JMX连接,使用JMX将远程进程添加到jvisualvm。您可以使用端口3333连接到该进程。显然,可以根据需要更改端口。
链接到更详细地解释这一点的文章
:http
:
//download.oracle.com/javase/6/docs/technotes/guides/visualvm/jmx_connections.html
笔记
- 永久保留JVM设置可能 不是 一个好主意,因为它们将允许任何人通过JMX连接到JVM。
- 如果需要,还可以向JMX JVM参数添加身份验证。



