JVM中哪个JavaThread是mutator线程?

问题描述 投票:1回答:2

mutator线程的概念与垃圾收集有关。

Hotspot中的基本线程模型是Java线程(java.lang.Thread的一个实例)和本机操作系统线程之间的1:1映射。

What do the different (HotSpot) JVM thread types do?

hotspot/src/share/vm/runtime/thread.hpp

// Class hierarchy
// - Thread
//   - NamedThread
//     - VMThread
//     - ConcurrentGCThread
//     - WorkerThread
//       - GangWorker
//       - GCTaskThread
//   - JavaThread
//     - various subclasses eg CompilerThread, ServiceThread
//   - WatcherThread

JavaThread是最接近mutator线程的人。但是,JavaThread有一些儿童班:

  • CodeCacheSweeperThread
  • CompilerThread,//通常我在JVM中看到C1,C2编译器
  • jmitiAgentThread
  • ServiceThread

我不认为CodeCacheSweeperThread,CompilerThread,jmitiAgentThread是mutator线程......但ServiceThread怎么样?

此外,我认为CompilerThread应该是JVM的内部线程,但不是mutator线程。

如何区分作为Java程序的mutator线程,说哪个线程服务于以下单线程程序(1:1映射)?

public class HelloWorld {

    public static void main(String[] args) {
        // Prints "Hello, World" to the terminal window.
        System.out.println("Hello, World");
    }

}
java garbage-collection jvm hotspot
2个回答
1
投票

mutator线程的概念与垃圾收集有关。

AFAIK,它不是通常与Java相关的术语,因为假定每个线程都能够修改堆。有一些例外,例如编译器线程只修改本机代码转换。

一般来说,我会假设任何线程都可以修改状态,除非你有特殊的理由相信。


0
投票

它与JVM internal threads更精确地与GC有关。

© www.soinside.com 2019 - 2024. All rights reserved.