使用jstack分析解决进程死锁问题
2016-02-26 09:03
417 查看
项目启动后不久就会出现死锁的现象,一直不知道什么原因造成的,后来经过大神的指点,解决了这个问题。
流程如下:
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
流程如下:
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
相关文章推荐
- 使用jstack分析解决进程死锁问题
- echarts地图 json数据 和 后套动态数据加载
- 彻底理解js中this
- JS设置cookie、读取cookie、删除cookie
- JS设置cookie,删除cookie
- json 数字key json 数字作为主键
- [Immutable.js] Lightning Fast Immutable.js Equality Checks with Hash Codes
- 初学Phaser.js之管中窥豹
- ExtJS4的文本框(textField)使用正则表达式进行验证(Regex)的方法
- JS实现随页面滚动显示/隐藏窗口固定位置元素
- 理解javascript中Map代替循环
- 超实用的JavaScript表单代码段
- js判断鼠标位置是否在某个div中的方法
- js去字符串前后空格的实现方法
- JavaScript 定时器 SetTimeout之定时刷新窗口和关闭窗口(代码超简单)
- JavaScript代码生成PDF文件的方法
- 原生javascript实现匀速运动动画效果
- JS判断手机系统
- 简单使用JSTL攻略
- javascript Math对象方法