我尝试使用JConsole来分析正在运行的进程所使用的内存,但是JConsole不会显示任何进程,尽管我确信有一个进程正在运行(此外,它应该在进程列表中显示JConsole,但它没有显示)。
有人知道为什么它不显示任何进程吗?
干杯
我尝试使用JConsole来分析正在运行的进程所使用的内存,但是JConsole不会显示任何进程,尽管我确信有一个进程正在运行(此外,它应该在进程列表中显示JConsole,但它没有显示)。
有人知道为什么它不显示任何进程吗?
干杯
在窗口提示符下,运行echo %TMP%,它会给你默认的临时目录。进入该目录并找到名为hsperfdata_user的目录,其中user是您的登录名。这是存储您的进程ID的目录。您创建的任何新进程,例如Java应用程序,都会有一个以进程ID命名的新文件。Jconsole将从此目录中选择进程ID。如果您无法在此目录中创建文件,则需要更改权限以允许写入。完成后,请启动新的Java应用程序,查看该目录中是否有新的进程ID文件。一旦确认,就可以启动jconsole了。
我有同样的问题。但是,如果我明确指定PID(如jconsole 1234
),jconsole就能够分析该进程。
如果您正在Windows上运行jconsole - 只需:
针对我的情况,删除在 %TMP%
目录下的 hsperfdata_USERNAME
目录并关闭所有的 JVMs 会有所帮助。
您需要使用与要分析的进程相同的用户启动jconsole。
我刚刚遇到了这个问题
如果你偶然使用了多个jdk(例如SDKMAN),请确保使用与应用程序相同的jdk运行jconsole
8年后...我遇到了同样的问题。我只能看到某些进程,但无法看到和监视在Linux的docker容器中运行的任何Java进程。
受到RoyalBigMack的Windows解决方案的启发:
su
命令)并运行jconsole
sudo jconsole
只有第一个解决方案适用于我,并且一旦jconsole UI弹出,所有隐藏的进程现在都可见了。
export TMP=/cygdrive/C/Users/xxx/AppData/Local/Temp
- geert3