2012-12-06 46 views
14

我试图运行JConsole的来分析正在运行的进程使用的内存,但JConsole中不显示即使我绝对相信,一个正在运行(除了它应该告诉我处理JConsole也在进程列表中,但它没有)。JConsole中找不到过程

有没有人有一个想法,为什么它不显示任何进程?

干杯

回答

10

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

+1

你能提供你如何做到这一点的详细信息? –

15

在窗口提示符下运行回声%TMP%,它会给你默认的临时目录。转到该目录并查找名为hsperfdata_的目录,其中是您的登录名。这是存储你的进程ID的目录。您创建的任何新进程(例如Java应用程序)都将有一个由进程ID命名的新文件。 Jconsole将从这个目录中获取进程id。如果您无法在此目录中创建文件,那意味着您需要更改权限才能进行写入。完成之后,启动一个新的Java应用程序以查看是否在目录中有新的进程ID文件。一旦确认,启动jconsole

+1

如果java进程从cygwin启动,它将有一个不同于预期的TEMP文件夹 - jconsole,从explorer启动时不会再找到该进程。 – Kai

+0

谢谢詹姆斯!修复权限为我工作! :) – baraka

1

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

2

在我的情况下,去除hsperfdata_USERNAME目录(%TMP%目录),并关闭所有的JVM提供了帮助。

0

你必须开始JConsole的使用相同的用户,你要分析是由启动过程中。

+0

即使我从同一用户运行,但我仍然无法运行jconsole。 –

0

如果你在Windows上运行JConsole的 - 简单地说:

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