2013-03-06 81 views
14

我看到在HotSpot JVM中實現了六種線程類型:VMThread,CGCThread,PGCThread,JavaThread,CompilerThread和WatcherThread。但是我不知道哪個線程類型正在做什麼。以下是我目前瞭解的內容:不同的(HotSpot)JVM線程類型有什麼作用?

  • VMThread:運行虛擬機任務,如垃圾收集器。
  • CGCThread:併發垃圾收集器。
  • PGCThread:並行垃圾收集器(與CGC有什麼不同?)。
  • JavaThread:程序的線程,我猜。
  • CompilerThread:編譯器的線程?
  • WatcherThread:?

其他問題:其他的JVM呢?

+2

並行VS併發:http://stackoverflow.com/questions/1897993/difference-between-concurrent-programming-and-parallel-programming – m0skit0 2013-03-06 15:37:32

+1

熱點中的PCG vs CGC:http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html#available_collectors – assylias 2013-03-06 15:54:42

+2

CompilerThread用於JIT編譯器。 – Chochos 2013-03-07 04:30:57

回答

3

您可以找到OpenJDK website的簡要說明:

主要種VM線程如下:

  • VM螺紋:VMThread的這種單一實例負責執行虛擬機操作,這將在下文
  • 週期任務線程討論:WatcherThread的此單一實例模擬計時器中斷爲內 執行定期操作的VM
  • GC線程:這些線程不同的類型,支持並行,併發垃圾收集
  • 編譯器線程,:這些線程執行的字節碼的運行期編譯爲本機代碼
  • 信號調度線程:該線程等待過程涉及信號和調度他們一個Java級別的信號處理方法

您可能需要閱讀整個線程管理段,因爲它繼續進一步的解釋,例如, VM線程負責什麼。

2

好,感謝您的意見,我們有一個回答的開頭:

1)由於垃圾收集器已經停止這世界mecanism,除了調音存在兩條途徑來降低這些停頓:

  • 隨着經由PGCThreads使得,如果n核是可用的,那麼n的線程可以被暫停期間運行,以縮短它們平行延伸的GC。
  • 隨着併發GC,通過CGCThread運行,並完成常規GC關閉停頓的工作,同時與主程序線程。

2)CompilerThread運行實時編譯器。

3)WatcherThread模擬計時器每隔50ms中斷一次,在VM中運行定期操作。

1

我想補充一點,線程類型JVM!千萬不要錯過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 
    }; 
相關問題