java线程监控

来源:互联网 发布:2015网络歌曲打包下载 编辑:程序博客网 时间:2024/06/05 18:50
1.  top -p $pid -H 加上-H这个参数后,会列出有哪些线程。这样就可以看到哪个线程id最消耗系统资源了。
看到的线程id是10进制的数字。

2. 根据查到浩资源的线程,在看此线程的详细情况

jstack $pid 可以打印出制定java进程的stack状况。

将前边top命令看到的线程id转为16进制显示,就可以在jstack的结果中找到它了。

例如以下:
"pool-2-thread-1" prio=10 tid=0x000000004c9b2000 nid=0x11f4 waitingon condition [0x0000000042f36000]
   java.lang.Thread.State:WAITING (parking)
       at sun.misc.Unsafe.park(Native Method)
       - parking to wait for <0x0000000580089050> (ajava.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
       atjava.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
       atjava.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
       atjava.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
       atjava.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
       atjava.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
       at java.lang.Thread.run(Thread.java:662)


其中的“nid=0x11f4 ”, 11f4就是线程id的16进制表示


0 0
原创粉丝点击