美文网首页
Java死锁检测方式JConsole

Java死锁检测方式JConsole

作者: touch_The_Sky | 来源:发表于2018-11-07 11:45 被阅读0次

Java死锁检测方式之JConsole

我们在开发中应该尽量避免死锁,但是如果真的有死锁产生那么我们怎么在一个复杂的项目中快速的找到死锁产生的原因呢?
我大概总结了一下常用的几种方式:

  1. 使用JConsole
    在我们的JAVA_HOME/bin目录下我们可以找到一个jdk提供的虚拟机监控工具叫Jconsole,双击打开连接你要查找的虚拟机进程,如图:


    jconsole1.jpg

    进入监控界面后点击左下角的检测死锁会检测出死锁的线程,点击具体的线程可以看到如下图死锁相关信息.


    jconsole2.jpg

比如下图所示,我们可以看到

名称: B  //发生死锁的线程名称
状态: java.lang.Object@6b0eb7ca上的BLOCKED, 拥有者: A //线程B正在等待的锁, 被线程A所持有
总阻止数: 1, 总等待数: 1    

堆栈跟踪: 
test.B.run(TestThread.java:56) //该死锁发生在TestThread.java文件的第56行
   - 已锁定 java.lang.Object@6cf3ef8 //线程B持有的锁

这是的发生死锁的线程A的信息:

名称: A
状态: java.lang.Object@6cf3ef8上的BLOCKED, 拥有者: B //线程A正在等待的锁, 被线程B所持有
总阻止数: 1, 总等待数: 1

堆栈跟踪: 
test.A.run(TestThread.java:33)
   - 已锁定 java.lang.Object@6b0eb7ca  //线程A持有的锁


根据此信息我们可以快速定位到死锁发生的位置和锁对象,以及和其相关的线程从而解决问题

相关文章

  • Java死锁检测方式JConsole

    Java死锁检测方式之JConsole 我们在开发中应该尽量避免死锁,但是如果真的有死锁产生那么我们怎么在一个复杂...

  • JVM_JMM: 死锁的检测

    死锁的示例代码: 通过jconsole来检测死锁: 名称: Thread-1状态: java.lang.Class...

  • 利用ThreadMXBean实现检测死锁

    在使用JConsole的时候,在线程页下,可以看到一个检测死锁按钮,很好奇它是如何获取死锁线程的。同时检测死锁算法...

  • 如何去检测死锁

    如何检测死锁 死锁预防 让线程获取锁的顺序一致 死锁检测 jps 查看java 进程信息 jstack +进程号 ...

  • jdk自带的工具

    jconsole Jconsole(Java Monitoring and Management Console)...

  • Java死锁检测之ThreadMXBean

    看此文章前请先了解之前一篇文章 "Java死锁之理解死锁" 中的死锁示例java 中提供了可以检测死锁的工具类Th...

  • JDK可视化工具

    jconsole 从Java 5开始 引入了 JConsole。JConsole 是一个内置 Java 性能分析器...

  • 高并发编程-05-活跃性问题

    死锁,饥饿,活锁 1,死锁 多个线程,各自占对方的资源,都不愿意释放,从而造成死锁 工具:使用jconsole可以...

  • Java concurrency《防止死锁》

    Java concurrency《防止死锁》 常见预防死锁的办法 有顺序的锁 具有超时时间的锁 死锁的检测 有顺序...

  • JVM - 调优工具

    JVM - 调优工具 jconsole Jconsole(Java Monitoring and Manageme...

网友评论

      本文标题:Java死锁检测方式JConsole

      本文链接:https://www.haomeiwen.com/subject/rdailftx.html