10

私のマシンで JVM インスタンスを起動すると、単純なクラスが で無限スリープを実行していると、JVM にmain()4 つの主要なスレッド (メイン スレッドを除く) が表示されます。

  1. リスナーをアタッチ
  2. 参照ハンドラ
  3. ファイナライザー
  4. シグナルディスパッチャー
  5. DestroyJavaVM

これらのコア JVM スレッドのそれぞれの目的を理解したいと思っています。簡単なインターネット検索から、これらのスレッドに関する次の詳細を見つけました。

  1. アタッチ リスナー: 動的アタッチには、ターゲット JVM にアタッチ リスナー スレッドがあります。これは、最初のアタッチ要求が発生したときに開始されるスレッドです。
  2. シグナル ディスパッチャー: OS が JVM にシグナルを送信すると、シグナル ディスパッチャー スレッドがそのシグナルを適切なハンドラーに渡します。
  3. Reference Handler : 保留中の参照をキューに入れる優先度の高いスレッド。GC は、処理が必要な参照の単純なリンク リストを作成し、このスレッドはそれらを適切なキューにすばやく追加し、ReferenceQueue リスナーに通知します。
  4. Finalizer : Finalizer スレッドはファイナライザー メソッドを呼び出します。
  5. DestroyJavaVM : このスレッドは、プログラムの終了時に Java VM をアンロードします。ほとんどの場合、待機する必要があります。

これらのスレッドと参照ドキュメント (既知の場合) の詳細 (または理解の修正) を知りたいです。

4

1 に答える 1