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

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

  • VMThread:运行垃圾收集器等虚拟机任务。
  • CGCThread:并发垃圾收集器。
  • PGCThread:并行垃圾收集器(与CGC有什么不同?)。
  • JavaThread:程序的线程,我猜。
  • CompilerThread:编译器的线程?
  • WatcherThread:?
  • 其他问题:其他JVM呢?


    你可以在OpenJDK网站上找到一个简短的解释:

    主要种类的VM线程如下所示:

  • VM线程:VMThread的这个单例实例负责执行VM操作,这将在下面讨论
  • 定期任务线程:WatcherThread的这个单例实例模拟定时器中断,用于在VM内执行定期操作
  • GC线程:这些不同类型的线程支持并行和并发垃圾收集
  • 编译器线程:这些线程将字节码的运行时编译执行为本地代码
  • 信号调度程序线程:该线程等待过程控制信号并将它们分派到Java级信号处理方法
  • 您可能想要阅读整个线程管理段落,因为它会继续进一步的解释,例如虚拟机线程负责的内容。


    好的,感谢评论,我们有一个答案的开始:

    1)由于垃圾收集器具有“停止世界”机制,除了调谐之外,还有两种方法来减少这些停顿:

  • 使用通过PGCThreads运行的并行GC,如果有n个核心可用,则可以在暂停期间运行n个线程来缩短它们。
  • 使用并发GC,通过CGCThread运行,并在主程序线程的同时完成常规GC关闭暂停的工作。
  • 2)CompilerThread运行即时编译器。

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


    我想补充一点,在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
      };
    
    链接地址: http://www.djcxy.com/p/79387.html

    上一篇: What do the different (HotSpot) JVM thread types do?

    下一篇: IoT request response protocol