【线程分析】
http://blog.csdn.net/bzfys/article/details/53504399分析
线程分析工具/方法:
jvisualvm:
在左侧双击某java进程后,右边点击线程dump即可查看。
但被分析的进程如果挂掉,此工具无法连接分析。
jstack:
jstack既可以对活着的进程做dump,也可以对core文件做线程dump。
1.查找当前运行的所有java进程(只能看运行的):ps -ef|grep java
查看本机所有java进程:jps -l
2.将某进程的所有线程信息打印到指定文件:jstack pid>文件路径
(文件不存在会自动创建)
对于已经挂掉的没响应的进程:jstack -F -m -l pid>文件路径
3.top -H -p pid
按占用率高低显示某个进程中的所有线程(该线程id需要转换为16进制才能去dump文件中查找)
gdb
最后一个工具,是linux平台的。
当对使用jstack对core文件做线程dump时,却报错了,得不到任何的dump信息时,可以用它。
它的用法是:
gdb <executable> <core>
其中,executable指的是java所在的目录,如:
D:\Program Files\Java\jdk1.7.0_10\bin
上面的是windows环境下的java命令路径,请对应到linux环境下的改路径。
线程分析:
dump文件中值得关注的线程状态有:
阻塞Blocked
死锁Deadlock
等待资源Waiting on condition
等待获取监视器Waiting on monitor entry
新生的小心情