Linux环境下,如何快速、准确的查看线程池繁忙状态?
RT~~求各位大侠路过指导:) 没人回,我自己回复了 {:2_167:}
1. 查看进程id
jps
ps -ef | grep java
都可以查看
2. 查看进程里具体哪个线程最屌丝
top -H -p yourpid
例如,查看如下,那么13099最屌丝,并转换为十六进制(0x332b,注意小写)
PID USER PRNIVIRTRESSHR S %CPU %MEM TIME+COMMAND
13098 admin 16 0 2543m 1.4g21m S0.0 72.8 0:03.35 java
13099 admin 16 0 2543m 1.4g21m S0.0 72.8 1:54.93 java
13100 admin 16 0 2543m 1.4g21m S0.0 72.8 0:00.06 java
3.stack查看线程状态
jstack -l yourpid | less
jstack -l yourpid | grep 0x332b --color=always -A10
其中,各字段的含义,这里有比较ok的介绍:http://www.blogjava.net/jzone/articles/303979.html
4. [备注]thread dump里,有几个ID比较迷惑人,这里注解一下:
1) "tid" is the thread ID the thread have in the JVM (could be a memory address)
2) "nid" is the native thread id (in hex). On some Linux systems this ID maps directly to a process ID (number 13883 (in decimal) in your case).
3) 线程状态的后面,有时候也会多跟一个id,那个是"资源"的id号,在等待对它的获取等。
已经两次了,我自问自答,介个论坛太米有爱了了。。 :)) 呵呵,以前没用过,这样的问题不要在java板块发,你应该去其他人多的板块 回复 3# dyllove98
啊?亲爱的,求指导,哪个版块银多捏? 你是想查java虚拟机的还是linux系统的? 这个问题还是适合在Java版发的,top -H是使用Java Thread Dumps调试的第一步,先找到影响性能的Pid,然后输入kill -3 <PID>,就可依据log文件初步定位影响性能的代码段。如果启动了Eclipse,输入kill -3 pid后,Eclipse的console会有显示,更具体的放狗搜一下Java Thread Dumps的内容就知道了。 回复 5# _Rayx
哈,我是想看具体某个进程的:)求深入指导!拜谢! 回复 6# isaacxu
嗯,比较讨厌的就是连daemon和JVM自身的一些线程都打出来了,好多,好耀眼~~我在YY,有没有一个工具,可以查看全部线程池的繁忙状态,并且也可以查看线程池内线程们繁忙状态的,如果有这样的工具,那碉堡了! 楼主你太好了......... 多dump几次,比较下看那个thread一直在运行
页:
[1]