关于java:JVM包含监视器的线程转储而没有锁定线程

关于java:JVM包含监视器的线程转储而没有锁定线程

JVM Thread dumps containing monitors without locking threads

是什么原因导致JVM线程转储显示了等待锁定在监视器上的线程,但是监视器没有相应的锁定线程?

Windows 2003上的Java 1.5_14


这些等待线程是否一直在等待,或者它们最终会继续进行?

如果是后者,则可能是垃圾收集器锁定了该锁。

您可以在Java命令行上添加参数-verbose:gc with -XX:+PrintGCDetails,以告知发生GC的时间。如果gc活动与您的速度下降同时发生,则可能表明这是问题所在。

有关垃圾收集的一些信息。


通过任何更改,您的代码是否使用任何JNI? (即,您是否正在运行从Java启动的任何本机代码?)。

我们已经看到了类似的行为,但是JDK 1.6.0_05。 App似乎出现死锁,但是Jstack显示了线程正在等待没有其他线程持有的锁。我们有一些JNI代码,因此很可能我们正在破坏某些内容。

我们尚未找到解决方案,该问题只能在1台计算机上重现。


您是否尝试过升级到Java 1.6?如果您仅使用1.5,则可能是一个错误。


我今天有一个类似的问题,它还涉及静态资源的访问。

简短的版本是,一个类在静态块中以及在AWT-EventQueue线程之外(由AWT TreeLock阻止)在GUI内进行了GUI更改,然后EventQueue引用了被阻止的类,这迫使它进行了更改。在类加载器的监视器上等待该类。

此处的主要观察结果是类加载器的锁未在线程转储中显示为已锁定。

完整的答案可以在该线程上找到。


是的,通常,每个锁定的监视器都必须具有所有者线程。也许您的堆栈转储未完成(太长),或者转储不一致。我可以想象它并没有停止世界,所以转储了一个锁定的监视器,但是拥有锁的线程在被转储之前就释放了它(这只是一个猜测)。

您能在哪里将转储文件上传为文本文件,以便于搜索,并告诉我们您要使用的监视器。


那只是一个疯狂的猜测,但这是否可能是线程通过尝试两次获取锁来锁定自己?如果您可以发布一些代码,可能会有所帮助。


推荐阅读

    linux线程查询命令?

    linux线程查询命令?,系统,第一,线程,命令,软件,名称,信息,进程,选项,方法,Lin

    linux多线程下载命令?

    linux多线程下载命令?,软件,工具,平台,中心,系统,代理,网络,网站,手机,官方

    linux断开线程命令?

    linux断开线程命令?,系统,状态,工作,代码,线程,入口,网络,管理,名称,命令,lin

    linux系统监视器命令?

    linux系统监视器命令?,系统,情况,工具,信息,实时,电脑,平均,报告,管理,分析,

    linux锁定帐户的命令?

    linux锁定帐户的命令?,系统,密码,情况,管理,工作,用户,帐户,账户,命令,权限,L

    linux锁定终端命令?

    linux锁定终端命令?,工作,密码,地址,系统,信息,命令,图片,状态,目录,用户,lin

    linux停止线程的命令?

    linux停止线程的命令?,系统,软件,代码,产品,进程,第一,管理,生产,通信,工具,l

    linux超线程查看命令?

    linux超线程查看命令?,系统,第一,信息,软件,命令,数据,工具,实时,界面,个数,L

    linux查看多线程命令?

    linux查看多线程命令?,系统,第一,线程,地址,数据,进程,命令,名称,软件,情况,

    linux命令行锁定界面?

    linux命令行锁定界面?,系统,管理,地址,密码,工作,一致,数字,首页,快捷键,界

    linux执行线程命令?

    linux执行线程命令?,系统,工作,线程,软件,服务,管理,信息,环境,名称,命令,lin

    linux线程操作命令?

    linux线程操作命令?,系统,工作,时间,代码,线程,信息,第一,命令,函数,操作,lin

    linux等待3秒命令?

    linux等待3秒命令?,时间,地址,工作,暂停,系统,环境,命令,状态,信息,代理,linu

    linux锁定密码命令?

    linux锁定密码命令?,密码,系统,管理,信息,策略,状态,名称,软件,位置,环境,如

    linux锁定用什么命令?

    linux锁定用什么命令?,地址,系统,认证,图片,名字,信息,状态,时间,命令,用户,L

    linux暂时锁定命令?

    linux暂时锁定命令?,密码,标准,状态,代码,图片,命令,信息,单位,名字,管理,lin

    linux下载命令多线程?

    linux下载命令多线程?,系统,单位,概念,数据,线程,进程,产品,地址,代码,状态,

    linux线程相关命令行?

    linux线程相关命令行?,系统,实时,代码,进程,线程,命令,策略,分时,时间,名称,

    linux等待命令执行完?

    linux等待命令执行完?,系统,环境,工具,状态,单位,电脑,代码,初级,时间,命令,l

    linux删掉线程的命令?

    linux删掉线程的命令?,状态,线程,进程,代码,地址,时间,系统,环境,管理,传播,l