我在Windows XP专业机器上运行了许多java进程。当我尝试通过本地JConsole连接到这些进程时,进程显示为灰色。
但是我可以在另一台机器上运行相同的进程,并通过该机器上的本地JConsole进行连接。
两台机器都运行java 1.6版本的进程和jconsole。
为什么这些过程会变灰?
答案 0 :(得分:17)
我现在正在与这个问题作斗争,我发现了一个解决方法:
您可以将本地用户的临时目录更改为他们可以访问的内容(例如D:\ temp)。确保对您尝试监视的进程和jconsole进程执行此操作。
显然会导致问题的另一件事是用户名,其中包含大写字母。该目录将始终使用全部小写字母创建,但只需将其重命名为完全如何在任务管理器中显示,所有问题都会消失:http://planeofthought.com/wp/?p=75
答案 1 :(得分:5)
如果进程以不同的用户身份运行(例如,如果您将其作为服务启动),那么您将无法连接到它们。另外,如果他们在较旧的jvm下运行,你很可能也无法与他们交谈。
在某些情况下,本地jmx通信机制使用本地文件系统,如果未正确定义权限,则可能会出现问题。你是否可以在网络文件系统(nfs,samba)上运行任何这些进程?
答案 2 :(得分:3)
说出用于启动任务管理器中的java应用程序的Windows用户名是YOUR_USER_NAME。 请检查您的临时文件夹中名称类似于hsperfdata_XXXXX(XXXXX应该是您的用户名)的文件夹,并确保YOUR_USER_NAME和XXXXX完全相同(小心大写和小写)。
答案 3 :(得分:2)
来自http://download.oracle.com/javase/6/docs/technotes/guides/management/jconsole.html:
禁用管理代理时无法连接的应用程序。这些应用程序包括在J2SE 1.4.2平台上启动的应用程序,或者在没有
-Dcom.sun.management.jmxremote
或com.sun.management.jmxremote.port
选项的J2SE 5.0平台上启动的应用程序。 这些应用程序在表中显示为灰色,JConsole无法连接到它们。在图3-1所示的示例连接对话框中,Anagrams应用程序是使用J2SE 5.0平台VM启动的,没有任何管理属性来启用JMX代理,因此显示为灰色且无法选择。
尽管文档中写了什么,但很可能您的进程是在不同的用户下运行的。您可以以管理员身份运行jconsole
,然后尝试。
答案 4 :(得分:1)
这对我有用。我将%TEMP%
和%TMP%
个环境变量更改为指向我在%HOME%
位置创建的文件夹(如C:\Users\[YOUR_NAME]\Temp
)。一旦我这样做,所有问题都消失了。
答案 5 :(得分:0)
将环境变量中的TEMP路径更改为D:\ temp,因为它可能是权限问题。为我解决了这个问题
答案 6 :(得分:0)
我遇到了前面所述的问题,但被告知一个更简单的解决方案:只需使用Java关闭所有程序(“ IntelliJ IDEA”,“ SoapUI”等-以解锁临时文件夹),然后删除{{1} }文件夹。然后,在打开任何Java程序之后,将重新创建此文件夹,但是这次使用正确的名称(最有可能是SELECT
T1.ID, TT2.ID, T1.PointGeog.STDistance(TT2.PointGeog)
FROM #Table1 as T1
CROSS APPLY (SELECT TOP 1 T2.ID, T2.PointGeog
FROM #Table2 as T2
WHERE T1.PointGeog.STDistance(T2.PointGeog) <= 100
ORDER BY T1.PointGeog.STDistance(T2.PointGeog) ASC) as TT2
)。然后,可以再次通过“ JConsole”或“ VisualVM”监视本地Java进程(现在运行时不会出现错误,并带有指向VisualVM: Troubleshooting Guide的链接)。
答案 7 :(得分:0)
代替此步骤,您只需转到CMD,然后键入jconsole.exe(PID)
请记住转到存在jconsole的路径,然后运行可执行文件。
答案 8 :(得分:0)