12

监视远程应用程序(使用 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)

本地监控如宣传的那样工作。

4

4 回答 4

14

Visual VM 不支持远程分析代码和分配。这很糟糕,但是如果你想启用 CPU 图形,你可以通过启用 JMX 来做到这一点

-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.port=12345

您可能还需要根据您的网络添加一些身份验证设置。JMX 设置将为您提供 CPU 使用率和线程状态,以及执行远程 jstack。

可以在此处找到远程版本的功能列表: Visual VM features

编辑 获取最新版本的视觉虚拟机 1.2.1 并下载 VisaulVM-Sampler。这将从 JMX 连接中读取以显示分析信息。

于 2009-11-18T13:55:50.683 回答
4

连接eclipse java程序。

第 1 步:确保您的 Eclipse -> Preferences -> Java -> Installed JREs 指向您启动 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

第 3 步:重要的是遵循以下建议。

https://visualvm.java.net/troubleshooting.html#jpswin2

说明:VisualVM 启动后立即显示一个错误对话框,指出无法监视本地应用程序。本地运行的 Java 应用程序显示为 (pid ###)。

解决方法:如果用户名包含大写字母,这可能在 Windows 系统上发生。在这种情况下,用户名是 UserName,但 JDK 创建的 jvmstat 目录是 %TMP%\hsperfdata_username。要解决此问题,请退出所有 Java 应用程序,删除 %TMP%\hsperfdata_username 目录并创建新的 %TMP%\hsperfdata_UserName 目录。

还可以尝试JVMMonitor是 Eclipse 独立程序监控的不错插件。

于 2015-10-13T14:56:26.130 回答
1

是因为远程版本(尽管稍微)大于本地版本吗?

于 2009-11-18T13:04:41.193 回答
0

我可以通过为 JMX 和 RMI 提供相同的端口号来解决此问题。

-Dcom.sun.management.jmxremote.port=29898 
-Dcom.sun.management.jmxremote.rmi.port=29898

请参阅配置 JMX 时为什么 Java 会打开 3 个端口?

于 2020-09-24T03:51:30.930 回答