首页   快速返回

jvm热点线程定位     所属分类 java
top -c   
-c 按cpu使用排序

按 数字1  , 查看各个核的cpu使用情况 ,可查看核数

top -bn1 -H -p $PID  (推荐使用这个)
-bn1  刷新一次后退出

-b 避免输出控制字符
top -n 1 只显示一屏信息 


top  -H -p $PID  (会一直刷新)

ps -mp $PID -o THREAD,tid,time | sort -rn
jstack $PID



printf "%x\n"  $threadid

top 显示的线程id 为 10进制  ,转成 16进制

printf "%x\n" 85032
14c28

jstack 84982 |grep 14c28
"Thread-12" #24 daemon prio=5 os_prio=0 tid=0x00007f3f5097b000 nid=0x14c28 waiting on condition [0x00007f3ebc627000]


jstack 84982 |grep -C30 14c28

grep -C30  显示匹配结果的前后30行


jstack 84982 |grep -C10 14c28
 

 
	- parking to wait for  <0x00000000c06066f8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
	at java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:403)
	at sun.nio.ch.EPollPort$EventHandlerTask.run(EPollPort.java:262)
	at sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:112)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

"Thread-12" #24 daemon prio=5 os_prio=0 tid=0x00007f3f5097b000 nid=0x14c28 waiting on condition [0x00007f3ebc627000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000000c06066f8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
	at java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:403)
	at sun.nio.ch.EPollPort$EventHandlerTask.run(EPollPort.java:262)
	at sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:112)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	


上一篇     下一篇
jcmd PerfCounter 说明

集合遍历删除注意点

java编码规范

并发编程模型

slf4j为什么用{}而不是%s

java获取系统信息