ジャワ - 詳細GCガベージコレクタ(B)

CMSコレクタ

CMSコレクタは(ConcurrentMarkSweep:並行マークがクリア)最短時間のためのコレクション休止は、コレクタの目標です。

このようなアプリケーションサーバの応答速度に特に重点を置いて、インターネットサイトのサーバーまたはB / Sシステムで使用するのに適しは、最短の休止時間にシステムが欲しいです。

CMSは理想的です大きなヒープメモリ、CPUコア数とより、サーバー側のアプリケーションだけでなく、コレクターG1のための最初の選択肢は、大規模なアプリケーションの前に表示されます。

並行マークスイープ並行マークをクリア、同時低ポーズコレクションは、並行処理は、ユーザスレッドで実行を指し、

オープンコレクタJVMパラメータ:-XX:+ UseConcMarkSreepGCは、このパラメータは自動的に-XX後にオンになっている:+ UseParNewGCオープン。

このパラメータを開いた後、バックアップCMSコレクタとしてのコレクタのParNew(ヤングゾーン)+ CMS(旧ゾーン)+ SerialOld組合せ、SerialOldエラーを使用。

CMSが収集するごみ(過度のメモリの断片化)することができなかった場合はSerialOld FullGcを使用することになります。

CMSは、GCの4つのステップを行いました:

  1. 初期マーク(CMS初期マーク):何ちょうどマーク直接GCのルーツに関連付けることができるオブジェクトはまだする必要があり、非常に速く、すべての作業スレッドを中断
  2. マーク(CMS同時マーク)とユーザスレッドと並行:プロセスのGCのルーツを追跡し、ユーザスレッドは、一緒に働くワーカースレッドを一時停止することなくメインコースマークは、すべてのオブジェクトをマーク
  3. 再ラベル付け(CMSの発言):するには、同時マーキング修正期間を、ユーザプログラムによるラベルの変化から、オブジェクトの一部という顕著なレコードで実行し、その結果を継続し、まだすべての作業スレッドを中断する必要があります並行マークするので、ユーザスレッドは、まだ訂正、その後、その公式のクリーンアップの前に、実行されています。
  4. 一緒に同時クリア(CMS同時スイープ)とユーザスレッド:クリアGCのルーツの到達不能オブジェクト、およびユーザスレッドは、一緒に働くワーカースレッドを一時停止することなく標識化の結果に基づいて、対象物まできれいに指示します。

最長同時マークとクリアの同時処理としては、ガベージコレクションのスレッドとユーザーは、同時に一緒に働くことができるので、CMSコレクタスレッドメモリとユーザーの全体的な回復は同時に一緒です。

4枚のステップ画像のGCによるCMS

CMSの利点:低一時停止同時コレクション

CMS短所:

  1. 同時実行、CPU資源に対する圧力:により同時に、同時に収集し、アプリケーションスレッドでCMSはヒープメモリのテイクアップが増加します、と言うことです、古いガベージコレクタのヒープメモリが使い果たされる前に、CMSを完了しなければならない、またはCMS回復が失敗したとき、それはへのセキュリティメカニズム、古いシリアルコレクターの意志をトリガーする
    大きな滞留時間が得られ、最後のGC STWの方法。

  2. クリアラベル付けアルゴリズムは、スペースデブリを整理することができない、の古いスペースが長いアプリケーションが徐々に枯渇し、最終的にヒープメモリに持っていたされたとして、セキュリティ・メカニズムによって圧縮されます。CMSは、フルGCの圧縮後、何回CMSコレクションの後に指定するパラメータ-XXlCMSFullGCsBeForeCompaction(毎回メモリの統合を行っているデフォルトの0を、)を提供します。

ガベージコレクタを選択する方法

  • 小シングルCPUやメモリ、スタンドアロンのプログラム
    -XX:+ UseSerialGC
  • マルチCPUは、バックグラウンドアプリケーションとして算出されるスループットを最大必要
    -XXを:+ UseParallelGcまたは
    -XX:+ UseParallelOlGC
  • 多CPU,追求低停顿时间,需快速响应如互联网应用
    -XX:+UseConcMarkSweepGC
    -XX:+ParNewGC
参数 新生代垃圾收集器 新生代算法 老年代垃圾收集器 老年代算法
-XX:+UseSerialGc SerialGc 复制 SerialOldGc 标整
-XX:+UseParNewGc ParNew 复制 SerialOldGc 标整
-XX:+UseParallelGc/-XX:+UseParallelOldGc Parallel[Scavenge] 复制 ParallelOld 标整
-XX:+UseConcMarkSweepGc ParNew 复制 CMS+SerialOld的收集器组合(SerialOld作为CMS出错的后备收集器) 标清
-XX:+UseG1GC G1整体采用标记-整理算法 局部是通过复制算法,不会产生内存碎片

おすすめ

転載: www.cnblogs.com/cjunn/p/12233441.html