最高命令-Java进程内的线程名称

时间:2019-06-27 14:02:12

标签: java linux java-threads

我有一个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”

我试图避免进行线程转储,然后标识线程名称。

1 个答案:

答案 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