我正在尝试将安装了jdk1.7.0_04的jvisualvm连接到本地运行的java进程.当我这样做时,jvisualvm在左下角显示一个进度条,表示它与进程的连接,然后再也没有响应.
我正在尝试连接的java进程仍然正常并且正常工作.
我可以使用jstack获取visualvm的threaddump,它显示1个被阻塞的线程.
AWT-EventQueue-0" prio=6 tid=0x04a1a000 nid=0x1110 waiting for monitor entry [0x062af000]
java.lang.Thread.State: BLOCKED (on object monitor)
at com.sun.tools.visualvm.core.model.ModelFactory.getModel(ModelFactory.java:76)
- waiting to lock <0x289584f0> (a com.sun.tools.visualvm.jvmstat.application.JvmstatApplication)
at com.sun.tools.visualvm.core.datasource.descriptor.DataSourceDescriptorFactory.getDescriptor(DataSourceDescriptorFactory.java:49)
Run Code Online (Sandbox Code Playgroud)
我无法连接到任何java进程,即使只是等待用户输入的微不足道的进程.我也遇到了与jdk1.6.0_32相同的问题.
- 更新我发现这只影响我从eclipse启动的java进程.可以从调试透视图启动命令eclipse并打开进程属性.从命令提示符启动相同的进程(使用我从eclipse复制的命令)允许从jvisualvm和jconsole连接.
完整的线程转储:
2012-05-10 13:18:47
Full thread dump Java HotSpot(TM) Client VM (23.0-b21 mixed mode, sharing):
"Inactive RequestProcessor thread [Was:TimedSoftReference/org.openide.util.TimedSoftReference]" daemon prio=2 tid=0x00e12800 nid=0xa5c in Object.wait() [0x0587f000]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x22d6a578> (a java.lang.Object)
at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:1880)
- locked <0x22d6a578> (a java.lang.Object)
Locked ownable synchronizers: …Run Code Online (Sandbox Code Playgroud) 我创建了一个简单的1文件java应用程序,它循环遍历循环,调用一些函数,分配一些内存,添加一些数字等.我通过eclipse运行该应用程序Run As->Java Application.
正在运行的应用程序出现在Java VisualVM下Local.
我双击该应用程序并转到Profiler选项卡.
默认设置为:
Start profiling from classes: my.main.package.**
Do not profile classes: java.*, javax.*,
sun.*, sunw.*, com.sun.*
我点击CPU.的CPU和Memory按钮变灰.什么都没发生.
该Status说profiling inactive.
当我的申请终止Status说application terminated.
我在这做错了什么?我需要调整一些设置吗?启动应用程序时是否需要设置VM标志?