监控远程应用程序时(使用jstatd)我既不能分析也不能监控CPU消耗。堆监控(假设我不使用G1)有效。 jvisualvm提供消息“此JVM不支持”。在CPU图形窗口中。
我的设置中是否有任何遗漏?谷歌的结果很少。
本地环境(Mac OS X 10.6):
java version "1.6.0_15"
Java(TM) SE Runtime Environment (build 1.6.0_15-b03-219)
Java HotSpot(TM) 64-Bit Server VM (build 14.1-b02-90, mixed mode)
远程环境(Linux版本2.6.16.27-0.9-smp(gcc版本4.1.0(SUSE Linux))):
java version "1.6.0_16" Java(TM) SE
Runtime Environment (build
1.6.0_16-b01) Java HotSpot(TM) 64-Bit Server VM (build 14.2-b01, mixed mode)
本地监控的工作方式与宣传的一样。
答案 0 :(得分:14)
Visual VM不支持远程分析代码和分配。这很糟糕,但是如果要启用CPU图,可以通过启用JMX
来实现-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.port=12345
您可能还需要根据网络添加一些身份验证设置。 JMX设置将为您提供CPU使用率,线程状态以及远程jstack。
可以在此处找到远程版本的功能列表: Visual VM features
修改强> 获取最新版本的visual vm 1.2.1并下载VisaulVM-Sampler。这将从JMX连接读取以显示分析信息。
答案 1 :(得分:4)
连接eclipse java程序。
第1步:确保您的Eclipse - >偏好 - > Java - >已安装的JRE指向您启动visualvm的相同jdk。
第2步:确保右键单击 - >运行配置具有以下
-Dcom.sun.management.jmxremote = true -Dcom.sun.management.jmxremote.authenticate = false -Dcom.sun.management.jmxremote.ssl = false -Dcom.sun.management.jmxremote.port = 16001 < / p>
第3步:重要遵循以下建议。
https://visualvm.java.net/troubleshooting.html#jpswin2
描述:VisualVM启动后立即显示一个错误对话框,指出无法监视本地应用程序。本地运行的Java应用程序显示为(pid ###)。
解决方案:如果用户名包含大写字母,则可能会在Windows系统上发生这种情况。在这种情况下,username是UserName,但JDK创建的jvmstat目录是%TMP%\ hsperfdata_username。要解决此问题,请退出所有Java应用程序,删除%TMP%\ hsperfdata_username目录并创建新的%TMP%\ hsperfdata_UserName目录。
另外尝试 JVMMonitor 是eclipse独立程序监控的不错插件。
答案 2 :(得分:1)
是因为远程版本(虽然稍微)大于本地版本吗?
答案 3 :(得分:0)
我可以通过为JMX和RMI提供相同的端口号来解决此问题。
-Dcom.sun.management.jmxremote.port=29898
-Dcom.sun.management.jmxremote.rmi.port=29898