美文网首页Java架构技术栈
JAVA死锁排查-性能测试问题排查思路

JAVA死锁排查-性能测试问题排查思路

作者: 若丨寒 | 来源:发表于2020-07-05 21:12 被阅读0次

死锁原因

Java发生死锁的根本原因是:在申请锁时发生了交叉闭环申请。即线程在获得了锁A并且没有释放的情况下去申请锁B,这时,另一个线程已经获得了锁B,在释放锁B之前又要先获得锁A,因此闭环发生,陷入死锁循环。

监控死锁

VisualVM监控工具有明显线程死锁提醒,也可监控到发生死锁的线程、类、代码行数、数据类型。

image

分析死锁

  1. VisualVM生成threaddump,查找死锁代码块内存地址

  2. VisualVM生成heapdump, 使用OQL查看被死锁对象的值和引用

select heap.findObject("0x00000006c0276428")
image.png image
  1. 使用OQL的另一种方法
jmap -dump:live,file=/data/test.map <jps端口号>
jhat /data/test.map
浏览器访问 http://ip:7000/
image image

示例代码

/*
 * 线程死锁等待演示
 */
static class SynAddRunalbe implements Runnable {
    int a, b;

    public SynAddRunalbe(int a, int b) {
        this.a = a;
        this.b = b;
    }
    @Override
    public void run() {
        synchronized (Integer.valueOf(a)) {
            synchronized (Integer.valueOf(b)) {
                System.out.println(a + b);
            }
        }
    }

public static void main(String[] args) throws Exception {
    for (int i=0;i< 100; i++) {
        new Thread(new SynAddRunalbe(1, 2)).start();
        new Thread(new SynAddRunalbe(2, 1)).start();
    }
}

来源:https://www.tuicool.com/articles/JbaAf2j

相关文章

  • Java相关的性能调优方案

    本文介绍了在性能测试过程中Java进程消耗CPU过高的问题排查方法、线程死锁问题排查方法和内存泄露的排查方法 Ja...

  • JAVA死锁排查-性能测试问题排查思路

    死锁原因 Java发生死锁的根本原因是:在申请锁时发生了交叉闭环申请。即线程在获得了锁A并且没有释放的情况下去申请...

  • 2020-04-08数据库死锁问题排查

    在测试同学测试过程中偶然发现日志中出现异常死锁日志如下: 出现问题后,立刻定位日志,排查死锁原因。以下为排查过程,...

  • java死锁问题排查

    首先熟悉一下jstack命令的用法,主要参数有-F -l -m 如下图: 模拟一段死锁的java代码,如下: ``...

  • Java问题排查整理

    Java问题排查工具箱 问题排查解决思路,逻辑推导工具 日志相关工具日志的标准化to be continued.....

  • 一种Java动态调试与热修复技术实践

    Java动态问题排查修复工具 问题排查基本思路 问题排查是一个比较体系化的领域,'问题'来源于多种多样,按照我的理...

  • show-busy-java-threads排查CPU性能问题

    show-busy-java-threads排查CPU性能问题 show-busy-java-thread用于快速...

  • CPU性能瓶颈分析套路

    性能指标 性能分析工具 根据指标找工具: 根据工具找指标: 排查CPU性能问题思路

  • java死锁排查

    锁是个非常有用的工具,运用场景非常多,因为其使用起来非常简单,而且易于理解。但同时它也会带来一些困扰,那就是可能会...

  • java死锁排查

    多个线程在竞争锁的过程中彼此之间形成堵塞的现象 排查 jstack查看线程以及堆栈信息 jconsole可视化工具...

网友评论

    本文标题:JAVA死锁排查-性能测试问题排查思路

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