- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
为 tomcat 进程运行线程转储我只注意到以下内容:
"CompilerThread0" daemon prio=10 tid=0x02b57400 nid=0xe0c waiting on condition [0x00000000]
java.lang.Thread.State: RUNNABLE
我的理解是 CompilerThread(anynumber) 由 JVM 运行,用于将字节码编译为 native 代码,但我想对此进行确认。但我主要担心的是线程说处于“等待条件”但后来声明为 RUNNABLE 状态。我误会了什么?最后 [0x00000000] 的含义是什么?
谢谢
最佳答案
所以逐个字段分割:
"CompilerThread0"
- Tomcat 具有用于编译 JSP 的编译器线程。 JSP 在第一次被访问时被编译成 java 类。daemon
- 这是一个守护线程,以便在您选择退出时不会让您的应用程序保持 Activity 状态prio=10
- 最高优先级,以便 JSP 编译优先于其他请求。nid=0xe0c
- 实际上不知道。 ;)waiting on condition [0x0000000]
- 线程当前处于阻塞状态,等待有人发出信号唤醒它并做某事。与 nid 一样,我实际上不确定 [0x000000] 指的是什么。我怀疑如果我们正在等待的话,它会保存对象监视器的地址。java.lang.Thread.State: RUNNABLE
- 等待条件的线程仍被视为 RUNNABLE首先让它感到困惑的一件事是线程即使在等待也是可运行的。这是违反直觉的,但它与 JVM 区分条件和对象监视器(例如用于等待/通知的机制)这一事实有关。
希望对您有所帮助!
关于java - tomcat 6 上的 CompilerThread 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7663560/
我在 java 进程 (oracle jdk1.7_072) 上运行 jstack 并找到这些行 "C2 CompilerThread1" daemon prio=10 tid=0x00007f1a8
当尝试使用 SIGSEGV 编译特定方法(始终是相同的方法)时,我的 java 应用程序几乎一直崩溃: A fatal error has been detected by the Java Run
我们有一个带有 java IO 操作的服务器应用程序。运行应用程序时,我们观察到 CompilerThread0 和 CompilerThread1 的 CPU 使用率分别为 45% 和 41%。应用
为 tomcat 进程运行线程转储我只注意到以下内容: "CompilerThread0" daemon prio=10 tid=0x02b57400 nid=0xe0c waiting on con
我是一名优秀的程序员,十分优秀!