2013-03-06 4 views
14

HotSpot JVMには、VMThread、CGCThread、PGCThread、JavaThread、CompilerThread、WatcherThreadの6つのスレッドタイプが実装されています。しかし、どのスレッドタイプが正確に何をしているのかわかりません。これまでに私が理解したことは次のとおりです。異なる(HotSpot)JVMスレッドタイプは何をしますか?

  • VMThread:ガベージコレクタのようなVMタスクを実行します。
  • CGCThread:並行ガベージコレクタ。
  • PGCThread:並列ガベージコレクタ(CGCとの違い?)
  • JavaThread:プログラムのスレッド。
  • コンパイラスレッド:コンパイラ用スレッド?
  • WatcherThread:?

その他の質問:他のJVMはどうですか?

+2

::で定義:http://stackoverflow.com/questions/1897993/difference-between-concurrent-programming-and-parallel-programming os_thread

パスをお見逃しなく – m0skit0

+1

ホットスポットでのPCGとCGCの比較:http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html#available_collectors – assylias

+2

CompilerThreadはJITコンパイラ用です。 – Chochos

答えて

3

あなたはOpenJDK website上の簡単な説明を見つけることができます。

次のようにVMスレッドの主な種類は以下のとおりです。

  • VMスレッド:VMThreadのこのシングルトンインスタンスはVM操作を実行する責任があります以下に説明する。
  • 定期タスクスレッド:WatcherThreadのこの単一インスタンスは、定期的な操作を実行するためのタイマ割り込みをシミュレートします VM
  • GCスレッド:このスレッド、異なるタイプの、平行およびコンカレントガベージコレクションをサポート
  • コンパイラスレッド:このスレッドは
  • ネイティブコードへの信号ディスパッチャスレッドをバイトコードの実行時のコンパイルを実行:このスレッドは、プロセス指向信号とディスパッチを待ちますそれは更なる説明、例えばを続けているのでJavaのレベルの信号処理方法にそれらは

あなたは、全体のスレッド管理段落を読みたいかもしれませんVMスレッドが担当するもの。

2

[OK]を、コメントのおかげで、我々は答えの始まりがあります

1)ガベージコレクタが停止-世界mecanismを持っているので、これらの一時停止を減らすには二つの方法チューニング以外にも存在する:

は、
  • PGCThreadsを介して実行される並列GCでは、n個のコアが使用可能な場合、n個のスレッドを一時停止中に実行して短縮することができます。
  • 同時GCを使用すると、CGCThread経由で実行し、通常のGCのジョブを終了すると、メインプログラムスレッドと同時に停止します。

2)CompilerThreadはJust-In-Timeコンパイラを実行します。

3)WatcherThreadは、50msごとにタイマー割り込みをシミュレートし、VM内で定期的な操作を実行します。

1

さらに、スレッドタイプがJVMに追加されます。 /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 
    }; 
関連する問題