在myeclipse里编写demo程序后运行,打开jconsole发现在本地进程列表发现只有jconsole本身,没有期望中的myeclipse进程和demo进程。
搜索“jconsole本地连接失败”大多数给出的答案都是:
在Run configurations……中 加入以下运行参数
-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8011 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
然后使用jconsole远程连接"localhost:8011",方法可行
但是究其原因:
在 Win32 系统上,每个 java 进程启动之后都在 %TMP%/hsperfdata_user(user为当前登录用户名)目录下建立一个以该 java 进程 pid 为文件名的文件,用以记录该 java 进程的一些信息。而 jconsole 和 jps 正是利用这些文件来获取当前系统中 java 进程的信息的。
在CMD命令行输入set tmp 显示临时目录为"TMP=C:\Users\我的用户名\AppData\Local\Temp",而在java程序中打印System.getProperty("java.io.tmpdir")显示为"C:\Windows\Temp",
运行demo程序发现在"C:\Windows\Temp\hsperfdata_我的用户名"发现新创建的vmid文件。将此文件复制到"C:\Users\我的用户名\AppData\Local\Temp\hsperfdata_我的用户名"下,此时打开jconsole即可看到本地demo进程。
原文:http://my.oschina.net/chape/blog/412132