jvisualvm没有列出某些Java进程

我想获取某个Java进程的堆转储(可能的内存泄漏)。但是,当我启动jvisualvm工具时,看不到任何正在运行的Java进程。

我已经在Google上搜索了有关此内容,并且已经找到了几篇文章,说您必须使用启动jvisualvm工具时所使用的同一JDK运行Java进程,以便它能够看到它们。但是,据我所知,情况已经如此。我正在本地做所有事情(我可以​​远程访问机器)。

需要考虑的几件事:

  1. 进程在防火墙Windows 2008服务器上运行
  2. 进程正在使用 重命名 的JDK java.exe可执行文件版本运行
  3. 据我所知,进程正在使用1.6.0_18 JDK运行
  4. 正在运行的进程之一启动RMI注册表

我正在等待服务器的虚拟副本,因此我可以弄乱它(这是生产服务器)。但与此同时;关于为什么我看不到jvisualvm(或jconsole)中的任何进程的任何想法?

回答:

在我做了一点研究之后,似乎彼得的评论是正确的。因为JVM进程是由另一个用户启动的(NETWORK

SERVICE帐户,因为它们是由Windows服务启动的),所以它们未显示在jvisualvm中。

解决方法

由于我可以访问应用程序配置,因此找到了以下解决方法,其中涉及为目标JVM显式启用不安全的JMX:

  1. 添加以下JVM参数:

-Dcom.sun.management.jmxremote.port=3333

-Dcom.sun.management.jmxremote.ssl=false

-Dcom.sun.management.jmxremote.authenticate=false

  1. 通过单击文件->添加JMX连接,使用JMX将远程进程添加到jvisualvm。您可以使用端口3333连接到该进程。显然,可以根据需要更改端口。

链接到更详细地解释这一点的文章

:http

:

//download.oracle.com/javase/6/docs/technotes/guides/visualvm/jmx_connections.html

笔记

  1. 永久保留JVM设置可能 一个好主意,因为它们将允许任何人通过JMX连接到JVM。
  2. 如果需要,还可以向JMX JVM参数添加身份验证。

以上是 jvisualvm没有列出某些Java进程 的全部内容, 来源链接: utcz.com/qa/420037.html

回到顶部