15

HotSpot JVM には、VMThread、CGCThread、PGCThread、JavaThread、CompilerThread、および WatcherThread の 6 つのスレッド タイプが実装されているようです。ただし、どのスレッドタイプが正確に何をしているのかわかりません。これが私がこれまでに理解したものです:

  • VMThread: ガベージ コレクターのような VM タスクを実行します。
  • CGCThread: コンカレント ガベージ コレクタ。
  • PGCThread: 並列ガベージ コレクター (CGC との違いは?)。
  • JavaThread: プログラムのスレッドだと思います。
  • CompilerThread: コンパイラのスレッド?
  • ウォッチャースレッド: ?

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

4

3 に答える 3

5

OpenJDK Web サイトで簡単な説明を見つけることができます。

VM スレッドの主な種類は次のとおりです。

  • VM スレッド: VMThread のこのシングルトン インスタンスは、以下で説明する VM 操作の実行を担当します。
  • 定期的なタスク スレッド: この WatcherThread のシングルトン インスタンスは、VM 内で定期的な操作を実行するためのタイマー割り込みをシミュレートします。
  • GC スレッド: さまざまな種類のこれらのスレッドは、並列および同時のガベージ コレクションをサポートします。
  • コンパイラ スレッド: これらのスレッドは、バイトコードからネイティブ コードへのランタイム コンパイルを実行します。
  • シグナル・ディスパッチャー・スレッド: このスレッドは、プロセス向けのシグナルを待機し、それらを Java レベルのシグナル処理メソッドにディスパッチします。

VM スレッドの役割など、さらに詳しい説明が続いているため、スレッド管理の段落全体を読むことをお勧めします。

于 2014-08-14T16:27:42.747 に答える
3

わかりました、コメントのおかげで、答えの始まりがあります:

1) ガベージ コレクタにはストップ ザ ワールド メカニズムがあるため、チューニング以外に、これらの一時停止を減らす 2 つの方法があります。

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

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

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

于 2013-03-07T15:47:12.233 に答える