java 性能检测工具 检测死锁等
2016-11-07 00:00
267 查看
死锁检测方法
1 JConsole 找到需要查看的进程,打开线程选项卡,点击检测死锁
2 jps查看java进程ID,使用jstack 7412输出信息
3 使用jvisualvm连接java虚拟机,查看线程检测死锁
解决方法:
四个条件打破一个即可,但是代价不同,最简单的编码就是顺序加锁和解锁
现在我们介绍下如何避免死锁的几个常见方法。《java变发编程的艺术》
避免一个线程同时获取多个锁。
避免一个线程在锁内同时占用多个资源,尽量保证每个锁只占用一个资源。
尝试使用定时锁,使用tryLock(timeout)来替代使用内部锁机制。
对于数据库锁,加锁和解锁必须在一个数据库连接里,否则会出现解锁失败。
检测CPU使用过高:http://flysnowxf.iteye.com/blog/1162691
TOP找出Cpu使用高的进程,这里我们分析21125这个java进程。
先输入top -p 21125,然后再按shift+h。这里意思为只查看21125的进程,并且显示线程。
jstack查找这个线程的信息
jstack
jstack 是一个可以返回在应用程序上运行的各种各样线程的一个完整转储的实用程序,您可以使用它查明问题。jstack [-l] <pid>,jpid可以通过使用jps命令来查看当前Java程序的jpid值,-l是可选参数,它可以显示线程阻塞/死锁情况。
1 JConsole 找到需要查看的进程,打开线程选项卡,点击检测死锁
2 jps查看java进程ID,使用jstack 7412输出信息
3 使用jvisualvm连接java虚拟机,查看线程检测死锁
解决方法:
四个条件打破一个即可,但是代价不同,最简单的编码就是顺序加锁和解锁
现在我们介绍下如何避免死锁的几个常见方法。《java变发编程的艺术》
避免一个线程同时获取多个锁。
避免一个线程在锁内同时占用多个资源,尽量保证每个锁只占用一个资源。
尝试使用定时锁,使用tryLock(timeout)来替代使用内部锁机制。
对于数据库锁,加锁和解锁必须在一个数据库连接里,否则会出现解锁失败。
检测CPU使用过高:http://flysnowxf.iteye.com/blog/1162691
TOP找出Cpu使用高的进程,这里我们分析21125这个java进程。
先输入top -p 21125,然后再按shift+h。这里意思为只查看21125的进程,并且显示线程。
jstack查找这个线程的信息
Java自带的性能监测工具用法简介——jstack、jconsole、jinfo、jmap、jdb、jsta、jvisualvm
http://blog.csdn.net/feihong247/article/details/7874063#jstack
jstack 是一个可以返回在应用程序上运行的各种各样线程的一个完整转储的实用程序,您可以使用它查明问题。jstack [-l] <pid>,jpid可以通过使用jps命令来查看当前Java程序的jpid值,-l是可选参数,它可以显示线程阻塞/死锁情况。
相关文章推荐
- java 性能检测工具 检测死锁等
- java 性能检测工具 检测死锁等
- java 性能监控 jstack 线程死锁 JConsole 和 BTrace 图形化工具
- Java自带的性能检测工具介绍
- 利用jdk自带工具检测java运行程序死锁现象
- Java压缩类库的使用-5.性能检测
- c/c++ c++ java 语言与工具 性能比较
- JAVA内存泄漏——内存泄漏原因和内存泄漏检测工具
- WEB辅助开发、调试、性能检测、调优工具集
- Java代码检测工具PMD规则集翻译合集
- JAVA内存泄漏——内存泄漏原因和内存泄漏检测工具(zt)
- Java性能故障排除工具收集
- 十个最好的Java性能故障排除工具
- Linux命令行性能检测工具
- 网站性能检测、代码验证工具31个
- java性能监控工具 可以检查内存泄露
- java性能监控工具JProfiler的使用
- SAR系统性能检测工具
- JAVA内存泄漏--内存泄漏原因和内存泄漏检测工具(zt)
- 计算机性能检测工具