我正在尝试将安装了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) 默认情况下,Jackson 会java.util.LinkedHashMap在反序列化任何Map类型时创建实例。如何自定义让 Jackson 创建不同的 Map 实现,但仍继续使用其默认 Map 反序列化器?