Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不同的(热点)JVM线程类型做什么?_Java_Multithreading_Jvm - Fatal编程技术网

Java 不同的(热点)JVM线程类型做什么?

Java 不同的(热点)JVM线程类型做什么?,java,multithreading,jvm,Java,Multithreading,Jvm,我看到热点JVM中实现了六种线程类型:VMThread、CGCThread、PGCThread、JavaThread、CompilerThread和WatcherThread。然而,我不知道哪种线程类型在做什么。以下是我迄今为止的理解: VMThread:运行VM任务,如垃圾收集器 CGCThread:并发垃圾收集器 PGCThread:并行垃圾收集器(与CGC的区别?) JavaThread:我想是程序的线程 编译器线程:编译器的线程 WatcherThread: 附加问题:其他JVM呢?

我看到热点JVM中实现了六种线程类型:VMThread、CGCThread、PGCThread、JavaThread、CompilerThread和WatcherThread。然而,我不知道哪种线程类型在做什么。以下是我迄今为止的理解:

  • VMThread:运行VM任务,如垃圾收集器
  • CGCThread:并发垃圾收集器
  • PGCThread:并行垃圾收集器(与CGC的区别?)
  • JavaThread:我想是程序的线程
  • 编译器线程:编译器的线程
  • WatcherThread:

附加问题:其他JVM呢?

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

1) 由于垃圾收集器有一个“停止世界”机制,因此除了调整之外,还有两种方法可以减少这些暂停:

  • 通过PGCThreads运行并行GCs,如果有n个内核可用,那么可以在暂停期间运行n个线程以缩短它们
  • 对于并发GC,通过CGCThread运行并完成常规GC关闭暂停的作业,与主程序线程并发
2) 编译器线程运行实时编译器


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

您可以在以下页面上找到简要说明:

VM线程的主要类型如下:

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

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

我要补充的是,有7个线程输入!不要错过操作系统线程

路径:定义在:
/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
  };

并行与并发:热点中的PCG与CGC:CompilerThread用于JIT编译器。有关WatcherThread的一些信息如下: