VisualVM无法取样内存

我有一个配置了JMXRemote参数的tomcat实例。 本地VisualVM能够在CPU上获取采样器,但不能用于内存。 内存按钮显示为灰色,上面写着:“内存采样:不可用。无法连接到目标应用程序。请确保应用程序在受支持的JDK 6或JDK 7上运行”

JMXRemote参数:

-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9086 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false 

Tomcat JDK版本:

 JDK1.6.0.30 

VisualVM版本:

 Version: 1.6.0_30 (Build 1320-110325); platform 110131-9c8b3bfb3a1e System: Windows Server 2008 R2 (6.1) , amd64 64bit Java: 1.6.0_30; Java HotSpot(TM) 64-Bit Server VM (20.5-b03, mixed mode) Vendor: Sun Microsystems Inc., http://java.sun.com/ Environment: Cp1252; en_US (visualvm) Userdir: C:\Users\Administrator\AppData\Roaming\.visualvm\7 Clusters: C:\Program Files\Java\jdk1.6.0_30\lib\visualvm\platform C:\Program Files\Java\jdk1.6.0_30\lib\visualvm\visualvm C:\Program Files\Java\jdk1.6.0_30\lib\visualvm\profiler 

Tomcat版本:

 Tomcat 6.0.32 

我在win server 2008上运行VisualVM和Tomcat。我做错了什么?

我之前遇到过同样的问题。 您必须从jvisualvm主页下载该版本,对吗? 不要这样做! 如果您使用新的jdk 1.7,VisualVM已经打包在您的jdk文件夹中。 使用此版本,内存样本不会有任何问题。

这篇博文使我相信JVisualVM和Tomcat的临时目录需要相同才能使内存采样工作。 对该post的评论之一:

temp目录必须设置为JVisualVM使用的目录,可以从VisualVM系统属性选项卡(java.io.tmpdir)中找到该目录。 一旦我正确设置了CATALINA_TMPDIR目录,这就非常有效。

我会检查VisualVM的版本与JVM完全相同。

VisualVM非常特定于版本。 我认为它仍处于相当快速的发展阶段。

(重新发布作为答案,因为它可能是解决方案)

我刚刚遇到同样的问题,上面的答案解决了我的问题,但我花了一段时间才弄明白。 为了防止其他任何人仍然遇到麻烦并最终在线程中结束,我使用的JDK是通过Eclipse配置的weblogic服务器的一部分,而不是我单独安装的JDK。 我还是一名初级程序员,在我开始查看我的eclipse设置并validation我的已安装JRE之前,我没有将2和2放在一起。

从weblogic jdk中运行jvisualvm.exe并且全部工作。

我遇到过与JVisualVM类似的问题,我甚至在这里问了一个问题

一些见解/建议:

  1. 因此,为了采样内存,您不需要jmx选项。
  2. 我会仔细检查你是否在同一台机器上安装了64位jvms以及32位jdks(即使它们没有正常运行且所有环境变量都已正确定义),我读过某些地方,有时它会让JVisualVM疯狂: )(是的,我知道这对我们来说听起来不合理,java开发人员)

  3. 如果它不起作用,只需卸载您拥有的所有jdks并仅安装所需的1个。 它可以解决这个问题。

我希望它会帮助你解决这个问题,毕竟彼得说这些事情是新的和不断发展的

以下是我对类似问题的解决方案: https : //stackoverflow.com/a/16330238/715483

您可以解决此错误

$ ssh -Y user @ remotemachine

$ wget http://java.net/projects/visualvm/downloads/download/release135/visualvm_135.zip

$ unzip visualvm_135.zip

$ cd visualvm_135 / bin

$ ./visualvm

这个visualvm实例将是全function的,包括内存和CPU采样。

在这里阅读更多相关信息: http : //shahriarinia.blogspot.com/2013/05/java-cpumemory-heap-usage-monitoring.html

http://mshahriarinia.com/

如果您的JRE是,请确保您的VirtualVM / JDK是32位副本。 如果您使用的是Eclipse,请检查Installed JRE部分中的选定JRE。

我也有同样的问题。

我总是将tomcat作为服务启动,并通过jmx连接将其与visualvm连接。

什么时候纠正了catalina.bat:

  set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=9090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false 

并使用startup.bat启动它,visualvm自动确定tomcat,并且内存采样处于活动状态。

我有同样的问题,但有不同的环境。 我的服务器是Linux机器,客户端是Windows 7机器,但问题是一样的。

解决方案是在同一台机器上运行jvisualvm,并与运行目标应用程序的同一用户一起启动。 如果我与其他用户(例如:root)运行jvisualvm,则内存按钮变为灰色。

首先, 应该启用JMX 。 如果还没有,请添加激活JMX所需的链接命令行环境变量。

应将环境变量CATALINA_TMPDIR设置为与JVisualVM匹配,如Local> VisualVM的“系统属性”选项卡中所示。 您可以通过双击左侧“应用程序”窗格中标有“VisualVM”条目的条目来打开它。

可以通过搜索环境“编辑帐户的环境变量”来设置环境变量。 新…>输入名称和值。

在此处输入图像描述

如果您希望VisualVM的临时目录位于其他位置,则必须从命令行启动VisualVM并添加参数。

 C:\Program Files\Java\jdk1.8.0_65\bin>jvisualvm.exe -J-Djava.io.tmpdir=C:\Users\You\Temp