我有一个Java应用程序,我想检查属于该应用程序的每个线程在哪个处理器上运行。这可以使用top来完成:
top -H -p [pid]
我的问题是我的PC顶部显示了线程名称,而在服务器上仅显示了Java。
我的电脑:Centos 6.10 2.6.32-754.12.1.el6.x86_64
服务器:Centos 6.9 2.6.32-696.18.7.el6.x86_64
同一最高版本:3.2.8
相同的Java版本:“ 1.8.0_112”
我试图避免进行线程转储,然后标识线程名称。
答案 0 :(得分:0)
使用jcmd <PID> Thread.print
并拾取nid
(本机线程ID)。
(涉及至少1个线程转储。)
"Pinpoint-TcpDataExecutor(13-0)" #22 daemon prio=5 os_prio=0 tid=0x00007f14495d1000 nid=0x35 waiting on condition [0x00007f141c6ad000]
java.lang.Thread.State: TIMED_WAITING (parking)
然后使用/proc/<pid>/task/<nid>/status
cat /proc/24/task/53/status
Name: java
Umask: 0022
State: S (sleeping)
Tgid: 24
Ngid: 0
Pid: 53
PPid: 1
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 512