JVM中哪个JavaThread是mutator线程?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JVM中哪个JavaThread是mutator线程?相关的知识,希望对你有一定的参考价值。

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");
    }

}
答案

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

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

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

另一答案

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

以上是关于JVM中哪个JavaThread是mutator线程?的主要内容,如果未能解决你的问题,请参考以下文章

在 SWR 中使用 mutate 重新验证数据 - 我应该使用哪个?

Vue 之 Mutatuons

JVM垃圾回收算法与垃圾收集器

javaThread.Sleep 与 Thread.onSpinWait

浅谈vue使用vuex

javaThread.start 它是怎么让线程启动的呢