JVM仮想マシンの世代別コレクション理論

概要:ガベージコレクションアルゴリズムとガベージコレクターを学習する前に、世代別コレクション理論を理解しておく必要があります。これにより、3つの異なるガベージコレクションアルゴリズムの理由を理解し、各ガベージコレクションのルートがどこにあるかを理解できます。ガベージコレクションアルゴリズムが存在するのは、まさに世代別コレクション理論によるものであり、ガベージコレクションアルゴリズムを使用した場合にのみ、ガベージコレクターを存在させることができます。

  1. 世代別収集理論とは何ですか?
    コレクターは、Javaヒープをさまざまな領域に分割してから、再生されたオブジェクトをそれらの経過時間に応じてストレージ用のさまざまな領域に割り当てる必要があります(年齢は、オブジェクトがガベージコレクションを生き残った回数です)。明らかに、エリア内のほとんどのオブジェクトが死んでいて、ガベージコレクションプロセスを生き残ることが難しい場合は、それらをまとめる必要があります。収集するたびに、少数の生き残ったオブジェクトを保持する方法にのみ焦点を当てます。収集される多数のオブジェクトにマークを付ける代わりに、オブジェクト。これにより、大量のメモリスペースを低コストで再利用できます(ここでは、JVMでは新世代に対応します)。残りのオブジェクトが死ぬのが難しい場合は、それらを一緒に、次に仮想コンピュータはこの領域を再利用するために低い頻度を使用できます(ここではJVMでは古い時代に対応します)。そのため、ガベージコレクションの時間オーバーヘッドとメモリスペースの有効使用の両方が考慮されます。これが世代別収集理論です。


  2. 世代別収集理論の基礎世代別収集理論は名目上は理論ですが、実際にはほとんどのプログラムの実際の動作に準拠した一連の経験的ルールであり、以下に示すように2つの世代別仮説に基づいています。最初の2つの仮説を補足する世代を超えた引用仮説。

     ①. 弱分代假说:绝大多数对象都是朝生夕灭的,这个假说奠定了新生代的雏形。
     ②. 强分代假说:熬过越多次垃圾收集的对象就越难以消亡,这个假说奠定了老年代的雏形。
     ③. 跨代引用假说:跨代引用相对同代引用只占极少数,这个假说是为了解决回收新生代对象时,有老年代对象引用了新生代中对象进行提出的。
    

  1. JVMの世代理論の実践
    JVMでは、世代コレクション理論に基づいて、オブジェクトの生存特性に応じて、若い世代(若い世代)と古い世代(古い世代)が分けられ、若い世代の分け方があります。世代と古い世代、そして若い世代と古い世代のガベージコレクターも適用されているため、若い世代のコレクション(マイナーGC)、古い世代のコレクション(メジャーGC)、グローバルコレクション(フルGC)、および混合コレクション(フルGC)があります。混合GC)。
    注:メジャーGCをヒープコレクション全体と見なす人もいます。これは間違いではありません。JDK9以降、最も一般的に使用されるサーバー側仮想マシンである旧世代のコレクターCMSは、サポートする新世代のコレクターをサポートしなくなりました。これはCMSです。デフォルトの新世代ソリューションParNewが設定されているため、JDK9以降、CMSはヒープコレクション全体を表すと言っても過言ではありませんが、メジャーGCをフルGCと同一視してはなりません。

  2. 世代別収集理論による収集者の分類

    ここに地図を添付してください
    ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/m0_46897923/article/details/114098243