JConsole无法找到进程

时间:2012-12-06 15:13:55

标签: jconsole

我尝试运行JConsole来分析正在运行的进程使用的内存,但JConsole并没有向我显示进程,即使我绝对确定正在运行(除了它应该在进程列表中显示JConsole)好吧,但它没有。)

有没有人知道它为什么不显示任何进程?

干杯

8 个答案:

答案 0 :(得分:14)

在窗口提示符下,运行echo%TMP%,它将为您提供默认的临时目录。转到该目录并找到名为hsperfdata_的目录,其中是您的登录名。这是存储您的进程ID的目录。您创建的任何新进程(如java应用程序)都将具有由进程ID命名的新文件。 Jconsole将从此目录中获取进程ID。如果您无法在此目录中创建文件,则表示您需要更改权限才能允许写入。完成后,启动一个新的java应用程序,看看是否在dir中有新的进程id文件。确认后,启动jconsole

答案 1 :(得分:10)

我有同样的问题。但是如果我明确指定PID,就像在jconsole 1234中一样,jconsole能够分析过程。

答案 2 :(得分:4)

如果您在Windows上运行jconsole - 只需:

  1. 查找 jconsole.exe
  2. 右键单击
  3. 选择以管理员身份运行

答案 3 :(得分:3)

就我而言,删除hsperfdata_USERNAME目录(在%TMP%目录中)并关闭所有JVM都有帮助。

答案 4 :(得分:1)

当受监视的JVM和监视工具(JConsole / JMC / Java Mission Control,甚至可能是VisualVM)的%TMP%值不同时,会发生这种情况。 这可能是Cygwin的标准场景(至少在我的情况下:Cygwin + Babun) 最简单的解决方案是将TMP环境变量的值设置为Windows使用的默认值,至少在shell启动JVM的范围内。

答案 5 :(得分:0)

您必须使用与要分析的进程相同的用户启动jconsole。

答案 6 :(得分:0)

刚遇到这个问题

如果您偶然使用多个jdk(例如SDKMAN),请确保使用与应用程序相同的jdk运行jconsole

答案 7 :(得分:0)

8年后...我遇到了同样的问题。我只能看到某些进程,但是看不到和监视Linux中的Docker容器中运行的任何Java进程。

受RoyalBigMack的the Windows solution启发:

  • 解决方案1.以超级用户身份运行终端(su命令)并运行jconsole
  • 解决方案2。将解决方案1作为一个命令运行,sudo jconsole

只有第一个解决方案对我有用,并且一旦jconsole UI弹出,所有隐藏的进程现在都可见。