CMSとG1ガベージコレクタ

  • CMSコレクタ

CMS(並行地図スイープ)コレクタは、サービスの応答速度に注意し、一般的JavaWebプログラムで使用される最短の目標復旧時間のコレクターで一時停止、で、我々はシステムが最短時間を一時停止するが、それは「マーク - スイープ」に基づいているアルゴリズム。

全体のプロセスは、4つのステップに分かれています。

      • 初期マーク

ただ、非常に速く、GCのルーツに直接リンクすることができますどのようなオブジェクトをマークします。

      • 並行マーク

GC RootsTracingのプロセスであり、

      • ラベルを変更

それらそのオブジェクトの一部ユーザプログラムが、この段階での滞留時間、生成されたマークの変更につながった補正並行マーク中に動作を継続するためのマークは、通常、長いマークされ、いくつかの初期の段階よりますが、並行マークよりも時間の短いです。

      • 同時クリア

クリアラベル

全体のプロセスは最長の同時マークを取り、同時スレッドを収集する明確なプロセスは、ユーザスレッドと一緒に働くことができるので、全体的に、メモリ回復処理CMSコレクタは、同時に一緒にスレッドを実行しているユーザです。

しかし、それはまた欠点であります:

      • CMSコレクタは、CPUリソースに非常に敏感です。同時段階では、ユーザスレッドの一時停止につながるのではなく、が理由のスレッド(またはCPUリソース)の一部の職業の
      • CMSコレクタは、浮遊ゴミを処理することはできません。CMS同時ユーザスレッドのクリーンアップ相は、まだプログラムが実行されていると、実行されている通り、自然に新しいゴミを発生させるためにそこ続ける、ゴミがマーキングプロセスのこの部分の後に表示され、CMSコレクションが次回まで待たなければならなかった時間でそれらを処分することはできません再びGC離れてクリア。
      • CMSコレクタが基づいている「マーク - クリア」コレクターのアルゴリズムを。コレクションの末尾にスペースデブリがたくさんあるでしょう。ときにあまりにも多くのスペースデブリ、大きなオブジェクトの割り当てに大きなトラブルをもたらすでしょう、そこには常に歳残りの部屋の多くなりますが、現在のオブジェクトを割り当てるための十分な大きさの連続したスペースを見つけることができない、我々は再びFullGCを開始することを余儀なくされています。
  • G1コレクタ
      • 並列並行

G1は完全にマルチCPU、マルチコア環境におけるハードウェアの利点は、複数のCPUの使用は、他のコレクターのいくつかは、それ以外の場合はGCの一時停止アクションJavaスレッドの実行を必要とするストップ - 世界の休止時間を短縮することができ、G1のコレクタはやはりによって複雑にすることができますJavaプログラムを作るための方法は継続します。

      • 世代別コレクション

世代コンセプトの携帯電話はまだG1に保存します。

      • 空間統合

それは、アルゴリズムの「コピー」に基づいているビューのローカル(地域間)の点からコレクタアルゴリズム - 全G1に「仕上げマーク」に基づいています。G1の動作中にメモリスペースデブリを生成しないことが保証することができ、コレクションは、通常のメモリが利用可能に提供しています。

      • 予測可能な一時停止

G1は、予測モデルの滞留時間を確立することができ、それは、ガベージコレクションで消費時間がNミリ秒を超えないようにすることができ、ユーザが明示的に時間セグメントMミリ秒の長さを指定することを可能にします。

G1全体のJavaヒープは(ない彼らは古い時代のコンセプトの新世代が、新しい世代を保持し、古い年はもはや物理的に分離されていないものの、別のエリア(地域)同じサイズの複数に分割し、それらの地域の一部であるさ連続)のコレクションが必要です。

Javaを通じて地域全体のヒープのガベージコレクションを避けるために計画することができるので、G1コレクタモデルは、予測可能な休止時間を確立することができました。G1は、許可された各収集時間に応じて、優先順位リストを維持するために、バックグラウンドで、ごみの累積値の大きさの内部優先領域の最大回復値を(必要取得回復を回復する空間と時間の経験)は、個々の領域を追跡します(これは理由のごみ、最初の名前です)。

G1コレクタ動作は、以下のステップに分けることができます。

      • 初期マーク

ただ、オブジェクトのGCのルーツは、直接にリンクすることができますどのようなマークし、ユーザプログラムの次の段階を同時に実行するように、TAMS(マーク・スタートで次の上位)の値を変更し、正しい利用できる地域に新しいオブジェクトを作成することができ、この段階では必要ですスレッドを一時停止するが、それは非常に短くなります。

      • 並行マーク

ライブオブジェクトを識別するために、GCルート到達可能性解析からオブジェクトをヒープし始め、この段階では、長い時間がかかりますが、ユーザプログラムの実行によって複雑にすることができます。

      • 最終マーク

思い出しセットログは、スレッドステージを一時停止する必要が覚えセットにデータをマージするが、並行して実行することができます。

      • フィルターのリサイクル

まず、回復値と種類の各領域の費用は、GCの一時停止に応じて、ユーザが所望するリサイクルプログラムを開発します。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

おすすめ

転載: www.cnblogs.com/zty-lyq/p/11494309.html