栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

jvm虚拟机性能调优实战-第一章-java项目内存死锁检测与诊断

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

jvm虚拟机性能调优实战-第一章-java项目内存死锁检测与诊断

目录
  • 一、场景
  • 二、案例代码
    • 1、线程T1
    • 2、线程T2
  • 三、检测诊断
    • 1、查询java进程
    • 2、查看线程栈信息,并导出
    • 3、打开线程栈信息,查找死锁标识

一、场景

启动两个线程,线程T1先对资源R1加锁,然后立马对资源R2申请加锁;线程T2先对资源R2加锁,然后立马对资源R1申请加锁。此时线程T1因为T2已经对资源R2加锁,所以一直等待释放R2;T2则一直等待T1释放R1,造成相互等待对方释放锁资源而造成的死锁。

二、案例代码 1、线程T1

2、线程T2

三、检测诊断 1、查询java进程
jps -l
2、查看线程栈信息,并导出
# 查看
jstack 7281
# 导出到文件
jstack 7281 > /tmp/7281.bin

7281为进程号

3、打开线程栈信息,查找死锁标识

可以搜索自己的包名,也可以搜索deadlock

可以明显看到死锁发生在DeadLockController.java的84行和58行代码处

特别感谢参考:https://www.ixigua.com/6842644783408611851?id=6842502368282542596&logTag=0d2f7511c602bc4f1005

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/880885.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号