前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java之死锁: 死锁发生了?怎么去定位死锁?怎么去修复死锁?

Java之死锁: 死锁发生了?怎么去定位死锁?怎么去修复死锁?

作者头像
崔认知
发布2023-09-06 14:23:19
2930
发布2023-09-06 14:23:19
举报
文章被收录于专栏:nobodynobody

简介


Java避坑指南:使用锁排序和尝试获取所有锁来避免死锁

中介绍了开发中如何避免死锁,那我们如何去定位或主动发现死锁的现象呢?

定位死锁-jstack工具


利用java的命令行工具:jps + jstack 组合可以得到Thread Dump:

jstack命令后,输出内容的最后一行很容易发现死锁现象。

定位死锁-ThreadMXBean监控工具


java的线程监控工具ThreadMXBean,提供了方法:findDeadlockedThreads来检测死锁

死锁示例:

利用ThreadMXBean检测死锁并打印死锁相关信息:

死锁相关信息输出:

定位死锁-在线工具FastThread


FastThread可能是分析生产环境中线程Dump文件的最佳在线工具。它提供了一个非常好的图形用户界面。它还包括多种功能,如线程的CPU使用率、堆栈长度以及最常用和最复杂的方法:

定位死锁-在线工具JStack Review


JStack Review是一个在线工具,用于分析Dump。从安全角度来看,它不会存储数据到云,这是使用它的一个主要优势。它提供了所有线程的图形化概述,显示了正在运行的方法,还按状态对它们进行了分组。JStack Review将产生堆栈的线程与其他线程分开,这一点非常重要,例如,内部进程。最后,它还包括同步器和忽略的行:

如何修复死锁


在生产环境,绝大部分都是赶紧离线出问题的服务即:从注册中心下线,保留现场,利用上面的分析工具去分析死锁的原因,当然如何想好彻底杜绝死锁,必须在编码阶段养成良好的编码习惯了。

小结


如果死锁发生了,我们提供了几种定位死锁,修复死锁的几种方法。

1、Java避坑指南:使用锁排序和尝试获取所有锁来避免死锁

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-06-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 认知科技技术团队 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档