远程jvisualvm会话不支持CPU和分析

问题描述 投票:12回答:3

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

本地监控按宣传方式工作。

java jmx jvisualvm
3个回答
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连接读取以显示分析信息。


4
投票

连接eclipse java程序。

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

第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独立程序监控的体面插件。


1
投票

是因为远程版本(虽然稍微)大于本地版本?

© www.soinside.com 2019 - 2024. All rights reserved.