- 线用top命令找出CPU占比最高的
- ps -ef 或者 jps 进一步定位得知是怎样一个后台程序
- 定位到具体线程或者代码
- 将需要的线程id转换位16进制歌是(英文小写)
- jstack pid | grep tid (16进制线程ID小写英文)-A60
案例
- top

- jps -l 或者 ps -ef|grep java|grep -v grep

- ps -mp 48951 -o THREAD,tid,time 或者 top -Hp 48951



- printf “%x\n” 48960

- jstack 48951 | grep bf40 -A60

[silver@localhost ~]$ jstack 48951 | grep bf40 -A60"VM Periodic Task Thread" os_prio=0 tid=0x00007ff5c00bb000 nid=0xbf40 waiting on conditionJNI global references: 311Found one Java-level deadlock:============================="Thread-1":waiting to lock monitor 0x00007ff5a40062c8 (object 0x00000000f0c5d458, a java.lang.Object),which is held by "Thread-0""Thread-0":waiting to lock monitor 0x00007ff5a4004e28 (object 0x00000000f0c5d468, a java.lang.Object),which is held by "Thread-1"Java stack information for the threads listed above:==================================================="Thread-1":at JstackDeadLockDemo.calLock_Obj2_First(JstackDeadLockDemo.java:49)- waiting to lock <0x00000000f0c5d458> (a java.lang.Object)- locked <0x00000000f0c5d468> (a java.lang.Object)at JstackDeadLockDemo.lambda$testDeadlock$1(JstackDeadLockDemo.java:23)at JstackDeadLockDemo$$Lambda$2/1418481495.run(Unknown Source)at java.lang.Thread.run(Thread.java:748)"Thread-0":at JstackDeadLockDemo.calLock_Obj1_First(JstackDeadLockDemo.java:36)- waiting to lock <0x00000000f0c5d468> (a java.lang.Object)- locked <0x00000000f0c5d458> (a java.lang.Object)at JstackDeadLockDemo.lambda$testDeadlock$0(JstackDeadLockDemo.java:22)at JstackDeadLockDemo$$Lambda$1/471910020.run(Unknown Source)at java.lang.Thread.run(Thread.java:748)Found 1 deadlock.
