我正在尝试使用VisualVM检查java应用程序。通常没有问题,但我正在尝试设置Eclipselink编织,所以我使用-javaagent标志启动程序;
-Xms1024m -Xmx1582m -Xshare:off -javaagent:C:\Users\Administrator\.m2\repository\org\eclipse\persistence\eclipselink\2.3.0-M7\eclipselink-2.3.0-M7.jar
当我使用Viusal VM查看程序时,我在Monitor页面上看不到任何内容。
不幸的是,VisualVM文档站点(在visualvm.java.net上)似乎已经失效。
感谢所有能帮助我理解我做错事的人。
答案 0 :(得分:1)
感谢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
并从VisualVM通过File-&gt;添加JMX连接附加到您的应用程序 并使用“localhost:”作为连接字符串。
2)你可以延长超时时间;
a)在visualvm / etc目录(例如visualvm_132 \ etc)中编辑visualvm.conf中的defaults_opts设置,以便根据需要增加-J-Dsun.jvmstat.perdata.syncWaitMs = 10000(我将其增加* 10到100秒)
VisualVM还有一个日志文件可通过Help-&gt; About-&gt;日志文件获得,该文件显示已抛出的任何异常。在这里,我找到了超时的堆栈跟踪...
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)
再次感谢托马斯。他应该从这个
获得任何积分