感谢 Oracle 的 Tomas Hurka,我可以回答这个问题。
该问题是由检测到 jvm 和 jvmstat (http://java.sun.com/performance/jvmstat/) 初始化之间的超时引起的。随着编织打开,这个间隔明显增加。
有两种方法可以解决此问题。
1)您可以在预定义端口上的受监控应用程序中显式启用 JMX
-Dcom.sun.management.jmxremote.port=<portNum>
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
并通过 File->Add JMX 连接从 VisualVM 附加到您的应用程序,并使用“localhost:”作为连接字符串。
2)您可以延长超时时间;
a) 在visualvm /etc 目录(例如visualvm_132\etc)中编辑visualvm.conf 中的defaults_opts 设置,以便根据需要增加-J-Dsun.jvmstat.perdata.syncWaitMs=10000(我将它*10 增加到100 秒)
VisualVM 也有一个日志文件,可以通过 Help->About->Log file 获得,它显示了任何已经抛出的异常。在这里我找到了超时的堆栈跟踪......
INFO [com.sun.tools.visualvm.jvmstat.JvmstatModelProvider]: Could not get MonitoredVM
sun.jvmstat.monitor.MonitorException: Could not synchronize with target
at sun.jvmstat.perfdata.monitor.v2_0.PerfDataBuffer.synchWithTarget(PerfDataBuffer.java:262)
再次感谢托马斯。他应该从中得到任何分数