当前位置:首页 > 开发 > IT生活 > 正文

Jconsole 和 jps 无法显示本地 Java 进程列表

发表于: 2014-01-04   作者:cuiyadll   来源:转载   浏览次数:
摘要: 前一阵在公司里使用 jconsle 时一切正常,然而在家中的机器上却出现了标题所示的问题: jconsole 和 jps 无法显示本地 Java 进程列表。 当时直接利用 -Dcom.sun.management.jmxremote.port=port 启动目标 java 进程并在 jconsole 中通过 localhost:port 方式成功连接上目标 java 进程。有了这个 work
前一阵在公司里使用 jconsle 时一切正常,然而在家中的机器上却出现了标题所示的问题: jconsole 和 jps 无法显示本地 Java 进程列表。

当时直接利用 -Dcom.sun.management.jmxremote.port=port 启动目标 java 进程并在 jconsole 中通过 localhost:port 方式成功连接上目标 java 进程。有了这个 work around 之后,对这个问题也就没有太在意。

昨天让在公司兼职的同学开 始熟悉 JMX ,结果在他的机器上也出现了同样的问题,我也同样地用上面的偷懒 work around 解决之。不过今天,同学发给了我这个问题的正解。当时没有细看,回家后才想起又搜了一下,使用的 Google 关键字为“ jconsole jps local process ”,第一个页面就是 SDN 上一个讨论这个问题的帖子,跟下去之后总结如下:

在 Win32 系统上,每个 java 进程启动之后都在 %TMP%\hsperfdata_user ( user 为当前登录用户名)目录下建立一个以该 java 进程 pid 为文件名的文件,用以记录该 java 进程的一些信息。而 jconsole 和 jps 正是利用这些文件来获取当前系统中 java 进程的信息的。根据

http://java.sun.com/j2se/1.5.0/docs/guide/management/faq.html#win1

的解释,如果该目录位于 FAT 文件系统下,或者位于 NTFS 文件系统下,但当前用户对 %TMP%\hsperfdata_user 目录的访问权限不足,无法创建和写入该文件,jconsole 和 jps 就抓瞎了。

我的情况属于第二种,解决方法自然是对给该目录进行正确的 NTFS 权限设置,方法有不少,比如可以利用 cygwin 下的 chmod 来间接修改 NTFS 的 ACL ,或者直接使用 cacls 来设置该目录的 ACL:

cacls %TMP%\hsperfdata_user /G Everyone:F

以上命令是对所用用户赋予目标目录的所有访问权限——这么做自然是偷了懒……但是当初看 cygwin 手册的时候就被 NTFS 的 ACL 的复杂度给吓到了,一时半会儿实在不想深究这个玩意儿……

另外,为什么该目录位于 FAT 文件系统下也会出问题,我还不知道具体原因。

Jconsole 和 jps 无法显示本地 Java 进程列表

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
jconsole 和 visualvm 监控java进程状态:包括: cpu使用,线程状态,内存使用情况等。 jconsole 是
简化一点,原来Linux上java的jar进程启动脚本为: java -jar /usr/ForTest/ForTest.jar $1 & 为了在
打开Outlook新建一封邮件后,点击收件人按钮希望能选择一个联系人时,跳出一个对话框,提示:无法显
哈尔滨理工大学软件工程专业08-7李万鹏原创作品,转载请标明出处 http://blog.csdn.net/woshixingaa
哈尔滨理工大学软件工程专业08-7李万鹏原创作品,转载请标明出处 http://blog.csdn.net/woshixingaa
启动程序时加控制台参数: -Dcom.sun.management.jmxremote.port=9112 -Dcom.sun.management.jmxrem
import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; impo
jps-虚拟机进程状况工具 Jps : JVM Process Status Tool 功能:列出下在运行的虚拟机进程,并显示虚
jps-虚拟机进程状况工具 Jps : JVM Process Status Tool 功能:列出下在运行的虚拟机进程,并显示虚
应用JConsole学习Java GC 关于Java GC的知识,好多地方都讲了很多,今天我用JConsole来学习一下Java
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号