不同的(HotSpot)JVM线程类型有什么作用?

时间:2013-03-06 15:23:52

标签: java multithreading jvm

我看到HotSpot JVM中实现了六种线程类型:VMThread,CGCThread,PGCThread,JavaThread,CompilerThread和WatcherThread。但是我不知道哪种线程类型正在做什么。这是我到目前为止所理解的:

  • VMThread:运行垃圾收集器等虚拟机任务。
  • CGCThread:并发垃圾收集器。
  • PGCThread:并行垃圾收集器(与CGC的区别?)。
  • JavaThread:程序的线程,我想。
  • CompilerThread:编译器的线程?
  • WatcherThread:?

其他问题:其他JVM呢?

3 个答案:

答案 0 :(得分:5)

您可以在OpenJDK website上找到简要说明:

  

主要的VM线程类型如下:

     
      
  • VM线程:此单例VMThread实例负责执行VM操作,如下所述
  •   
  • 定期任务线程:WatcherThread的这个单例实例模拟定时器中断,以便在其中执行定期操作   VM
  •   
  • GC线程:这些不同类型的线程支持并行和并发垃圾回收
  •   
  • 编译器线程:这些线程执行字节码到本机代码的运行时编译
  •   
  • 信号调度程序线程:该线程等待进程定向信号并将它们分派给Java级信号处理方法
  •   

您可能希望阅读整个“线程管理”段落,因为它会继续进一步解释,例如: VM线程负责的是什么。

答案 1 :(得分:3)

好的,感谢评论,我们得到了答案的开头:

1)由于垃圾收集器具有世界末日的机制,除了调整之外还有两种方法可以减少这些停顿:

  • 通过PGCThreads运行并行GC,如果有n个核可用,那么在暂停期间可以运行n个线程来缩短它们。
  • 使用并发GC,通过CGCThread运行并完成常规GC关闭暂停的工作,与主程序线程同时进行。

2)CompilerThread运行Just-In-Time编译器。

3)WatcherThread每隔50ms模拟一次定时器中断,以便在VM中运行定期操作。

答案 2 :(得分:1)

我想补充说JVM中有 7 个线程类型!不要错过os_thread

路径:定义于:/hotspot/src/share/vm/runtime/os.hpp

  enum ThreadType {
    vm_thread,
    cgc_thread,        // Concurrent GC thread
    pgc_thread,        // Parallel GC thread
    java_thread,       // Java, CodeCacheSweeper, JVMTIAgent and Service threads.
    compiler_thread,
    watcher_thread,
    os_thread
  };