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

前端 未结 3 1696
一生所求
一生所求 2020-12-20 11:37

I see there are six thread types implemented into the HotSpot JVM: VMThread, CGCThread, PGCThread, JavaThread, CompilerThread and WatcherThread. However I don\'t know which

相关标签:
3条回答
  • 2020-12-20 12:23

    And I would add that there are 7 threads type in JVM! Don't miss os_thread

    path: Defined in: /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
      };
    
    0 讨论(0)
  • 2020-12-20 12:36

    You can find a brief explanation on the OpenJDK website:

    The main kinds of VM threads are as follows:

    • VM thread: This singleton instance of VMThread is responsible for executing VM operations, which are discussed below
    • Periodic task thread: This singleton instance of WatcherThread simulates timer interrupts for executing periodic operations within the VM
    • GC threads: These threads, of different types, support parallel and concurrent garbage collection
    • Compiler threads: These threads perform runtime compilation of bytecode to native code
    • Signal dispatcher thread: This thread waits for process directed signals and dispatches them to a Java level signal handling method

    You might want to read the whole Thread Management paragraph since it continues further explanations, e.g. what the VM thread is responsible for.

    0 讨论(0)
  • 2020-12-20 12:37

    Ok, thanks to comments, we have the beginning of an answer:

    1) Since the garbage collector has a stop-the-world mecanism, there exist besides tunings two ways to reduce these pauses:

    • With parallel GCs running via PGCThreads such that, if n cores are available, then n threads can be run during pauses to shorten them.
    • With a concurrent GC, running via a CGCThread and finishing the job of the regular GC off pauses, concurrently with the main program thread.

    2) The CompilerThread runs the Just-In-Time compiler.

    3) The WatcherThread simulates timer interrupts every 50ms to run periodic operations in the VM.

    0 讨论(0)
提交回复
热议问题