使用jstack分析解决进程死锁问题

项目启动后不久就会出现死锁的现象,一直不知道什么原因造成的,后来经过大神的指点,解决了这个问题。

流程如下:

1.环境jdk1.6以上;

2.linux下使用ps aux|grep tomcat 命令查看tomcat的进程id;

3.使用jstack pid >file.log将java栈堆信息收集;

4.打开file.log文件可以分析死锁的原因


file文件中可以看到有一个方法在执行中一直处理blocked状态,找到对应的方法出错地方


原因是:获得redis实例的方法上使用了同步锁,这个地方不需要使用这个synchronized,将其去掉就可以了;

总结:
jstack在解决问题上还是比较有帮助的,信息简洁有效,其实有很多图形化的分析工具是基于它的。但jstack需要jdk1.6以上的版本才支持。

另附上jstack不错的文章:http://blog.csdn.net/feihong247/article/details/7874063

posted @ 2016-02-26 09:03  奋斗鹿  阅读(721)  评论(0编辑  收藏  举报