【问题标题】:jvisualvm doesn't list certain Java processesjvisualvm 没有列出某些 Java 进程
【发布时间】:2011-06-29 05:12:19
【问题描述】:

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

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

需要考虑的几点:

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

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

【问题讨论】:

  • 为什么要重命名java.exe?我很确定 VisualVM 通过查找所有运行 java.exe 的进程来获取它的进程列表
  • 您无法在 Windows 中轻松看到命令行争论,因此您最终重命名/复制 java.exe,以便您知道哪个进程是什么。
  • jconsole 和 visualvm 是用户特定的。如果进程以其他用户身份运行,您将无法看到它们,但您可以打开安全性以允许“远程”管理它们
  • 感谢您的提示,很可能就是这样。这些进程是通过 Windows 服务启动的,因此它们可能在某个 Windows 服务帐户下运行。你能提供任何关于这方面文章的链接吗?另外,请随时提供作为答案,如果它是正确的,我会批准它。
  • @Peter 如果您想查看 Windows 机器上运行的内容,以及完整的命令行参数、tcp/ip 套接字等,那么您应该使用 sysinternals 进程资源管理器 technet.microsoft.com/en-us/sysinternals/bb896653 类似于类固醇上的任务管理器.作为开发人员,一旦您尝试过它,您将始终希望在您使用的任何 Windows 机器上使用它。 sysinternals 套件中还有许多其他非常有用的工具,我也喜欢 junction,它为 windows 带来了真正的 unix 类符号链接。

标签: process java jvisualvm


【解决方案1】:

最简单的方法是以管理员身份执行jvisualvm(win:“以管理员身份运行”)。这并不理想但有效。然后所有的java进程都是可见的。

【讨论】:

    【解决方案2】:

    好吧,在我做了一些研究之后,彼得的评论似乎是正确的。因为 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

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

    链接到更详细解释这一点的文章http://download.oracle.com/javase/6/docs/technotes/guides/visualvm/jmx_connections.html

    注意事项

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

    【讨论】:

    • 谢谢!正是我需要知道的。
    • 是的,+1。我一直对此感到困惑。 Linux 上也是这样吗?
    • @DavidBrossard 我想是这样,或者至少存在类似的机制来限制某些服务,就像 Windows 那样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 2016-01-09
    相关资源
    最近更新 更多