【线程分析】

 

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

posted @ 2017-10-13 09:36  新生的小心情  阅读(133)  评论(0编辑  收藏  举报