この記事では、Java の CMS リサイクラーについて簡単に紹介します (写真とテキスト)。必要な方は参考にしていただければ幸いです。
マーク アンド クリア アルゴリズムを使用し、マルチスレッドの並列コレクションを使用するガベージ コレクターでもあります。
CMS が動作するときの主な手順は、初期マーキング、同時マーキング、事前クリーニング、再マーキング、同時クリア、同時リセットです。初期マーキングと再マーキングはシステム リソース専用ですが、事前クリーニング、同時マーキング、同時クリア、同時リセットはユーザー スレッドと一緒に実行できます。したがって、アプリケーションの実行中にガベージ コレクションを実行できます。
マーク アンド クリア アルゴリズムによると、初期マーキング、同時マーキング、および再マーキングはすべて、リサイクルが必要なオブジェクトをマークするためのものです。同時クリーンアップは、マーキングが完了した後にガベージ オブジェクトをリサイクルすることです。同時リセットとは、ガベージ コレクションの完了後に CMS データ構造とデータを再初期化して、次のガベージ コレクションに備えることを指します。
CMS リサイクル プロセス全体で、デフォルトでは、同時マーキングの後に事前クリーニング操作が行われます (事前クリーニングを実行しないようにパラメーター -XX:CMSPrecleaningEnabled を設定することもできます)。事前クリーニングは、正式なクリーニングの準備と確認に加えて、一時停止時間の制御も同時に行います。リマーキングは CPU 専用であるため、新世代 GC 発生直後にリマーキングがトリガーされると、一時停止時間が非常に長くなる可能性があります。この状況を回避するには、事前クリーニング中に新世代の GC が発生するのを待ち、履歴パフォーマンス データに基づいて新世代の GC が発生する時刻を予測し、その中間の時点で再マークを付けることができます。現在時刻と予測時刻。これにより、新世代GCと再マーキングとの重複を極力回避し、休止時間を極力短縮することができる。
-XX:ConcMarkSoupGC を使用して CMS リサイクラーを有効にします
-XX:ConcGCThreads 同時スレッド数を設定します
-XX: CMSInitiatingOccupancyFraction 現在の値を設定します。 旧世代の使用率が N に達すると、CMS リサイクルが実行されます。
-XX: UseCMSCompactAtFullCollection CMS は、ガベージ コレクションの完了後にデフラグを実行します。
-XX:CMSFullGCsBeforeCompaction N 回の CMS リサイクル後のメモリ圧縮を設定します。
-XX: CMSClassUnloadingEnabled CMS メカニズムを使用して Perm 領域のクラス データをリサイクルします
以上がJava での CMS リサイクラーの簡単な紹介 (画像とテキスト)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。