gpt4 book ai didi

java - 将线程进程 ID 转换为十六进制格式

转载 作者:行者123 更新时间:2023-12-01 18:00:23 44 4
gpt4 key购买 nike

我正在尝试找出哪个 Java 线程正在占用我的 CPU。从我的高层的角度来看,我发现这个 LWP 是瓶颈,占 17.8%:

10634 user1+  20   0 6911624 939456  28016 S  0.3  17.8   0:00.65 java

据我了解线程的processid,应该映射Java线程转储的nid属性:

"RMI Scheduler(0)" #209 daemon prio=9 os_prio=0 tid=0x00007fe71c18a800 nid=0x2c78 waiting on condition [0x00007fe6d35a5000]
"RMI TCP Accept-0" #207 daemon prio=9 os_prio=0 tid=0x00007fe714106000 nid=0x2c74 runnable [0x00007fe6d1f84000]
"Attach Listener" #206 daemon prio=9 os_prio=0 tid=0x00007fe7301ab800 nid=0x2a98 waiting on condition [0x0000000000000000]
"ServerService Thread Pool -- 67" #205 prio=5 os_prio=0 tid=0x00007fe74c126000 nid=0x2a49 waiting on condition [0x00007fe6d38a8000]
"Thread-94" #202 daemon prio=5 os_prio=0 tid=0x00007fe70c0c7800 nid=0x2a43 runnable [0x00007fe6ce995000]
"Weld Thread Pool -- 5" #192 prio=5 os_prio=0 tid=0x00007fe6f8116000 nid=0x2a32 waiting on condition [0x00007fe6ced97000]
. . . . . . . .

但是,将 10640 转换为十六进制不会产生有效的匹配:

printf -v result1 "%x" "10640"
$ echo $result1
2990

您能否帮助将 pid (10634) 转换为有效的十六进制值,如 nid 属性所示?谢谢

最佳答案

事实上,2990 是(十进制)10640 的十六进制表示。也许您只希望 0x 前缀与 C/Java/Python 表示法一致

 $ printf -v result1 0x%x 10640
$ echo $result1
0x2990

$ printf 0x%x 11340
0x2c4c

为了完整起见:您可以参见 this question with its answers了解如何查找 Linux 上进程生成的 native 线程 ID。

关于java - 将线程进程 ID 转换为十六进制格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41460553/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com