【发布时间】:2017-08-24 10:31:53
【问题描述】:
我在 java 进程 (oracle jdk1.7_072) 上运行 jstack 并找到这些行
"C2 CompilerThread1" daemon prio=10 tid=0x00007f1a8415d000 nid=0x7d72 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
"C2 CompilerThread0" daemon prio=10 tid=0x00007f1a8415a000 nid=0x7d71 waiting on condition [0x0000000000000000]
java.lang.Thread.State: RUNNABLE
我知道 C2 是一个字节码编译器。我有三个问题:
- 为什么有确切的 2 个编译器线程?可以多或少吗?如果有,什么时候?编译是否并行运行?
-
nid参数是什么意思?第一个nid=0x7d72看起来和java版很像,是巧合还是巧合? - 为什么条件地址绝对为零?
【问题讨论】:
-
nid是十六进制的线程的进程ID。你应该可以在 /proc 下找到它。