【问题标题】:What do the different (HotSpot) JVM thread types do?不同的(HotSpot)JVM 线程类型有什么作用?
【发布时间】:2013-02-21 11:23:03
【问题描述】:

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

  • VMThread:像垃圾收集器一样运行 VM 任务。
  • CGCThread:并发垃圾收集器。
  • PGCThread:并行垃圾收集器(与 CGC 的区别?)。
  • JavaThread:我猜是程序的线程。
  • CompilerThread:编译器的线程?
  • WatcherThread:?

其他问题:其他 JVM 呢?

【问题讨论】:

标签: java multithreading jvm


【解决方案1】:

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

VM线程的主要种类如下:

  • VM 线程:VMThread 的这个单例实例负责执行 VM 操作,这些操作将在下面讨论
  • 周期性任务线程:WatcherThread 的这个单例实例模拟定时器中断,用于在内部执行周期性操作 虚拟机
  • GC 线程:这些线程,不同类型,支持并行和并发垃圾回收
  • 编译器线程:这些线程将字节码运行时编译为本机代码
  • 信号分派器线程:该线程等待进程定向信号并将它们分派到 Java 级别的信号处理方法

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

【讨论】:

    【解决方案2】:

    好的,感谢 cmets,我们有了答案的开头:

    1) 由于垃圾收集器有一个 stop-the-world 机制,除了调整之外,还有两种方法可以减少这些暂停:

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

    2) CompilerThread 运行即时编译器。

    3) WatcherThread 每 50 毫秒模拟一次定时器中断,以在 VM 中运行周期性操作。

    【讨论】:

      【解决方案3】:

      我还要补充一点,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
        };
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-06-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多