GCガベージコレクション処理(4)のG1

G1日志

G1の問題、あなたは多くの有用な情報を得ることができたときにG1詳細なログ情報は、我々は、次のパラメータを使用することをお勧めします

1、-XX:+ PrintGCDateStamps法線雲の日時印刷
2、-XX:+ PrintGCDetails G1プリント詳細
3、-XX:;:統計によるするGC GC時間+ PrintAdaptiveSizePolicy印刷適応戦略適応戦略スループット、メモリフットプリント、ヒープサイズゾーン再計算
4、-XX:生存者領域情報化時代に+ PrintTenuringDistribution印刷対象領域を

GCプロセス

1、若い世代のGC

1、アセンブリの若いコレクションは、並行マークされませんので、STWいっぱいある
アプリケーションスレッドが活動を継続した後、若い世代空間が徐々に満たされる、2。JVMは、エデンエリアにオブジェクトを割り当てると(エデン領域が満杯である)、STWの種類がトリガされた失敗した若い世代のコレクションに一度

作業工程

図1に示すように、スキャンルートスキャン:静的およびローカルオブジェクト等が走査される
2、メモリが更新RSETを設定更新:ダーティーカードパーティションスキャン更新RSETのために
。3、スキャンRSET:前電流CSETのコレクションには、CSETパーティションRSETをスキャンold-検出>若いこの基準ケース
4、転送および回復-OBJECTコピー:新しいパーティションの生遺族や古い地域、CSET内のリサイクルゴミオブジェクトへのCSET転送オブジェクト
柔らかく、弱い参照の参照:5、参考ユニット仮想基準、最後の参照は、JNI参照は、あまりにも多くの時間を取るときのパラメータ-XX使用するオプション:+ ParallelRefProcEnabledアクティベーションプロセスのマルチスレッドの参照
6、若い集中型のコレクション、エデンのパーティションはサバイバーパーティションにコピーされますライブオブジェクトを。元のオブジェクトの分割を生き残ったサバイバーは、対象の年齢に応じて、新旧遺族パーティションのパーティションに昇格されます。元のパーティションの若い世代は、全体的な回復を失われます。

2歳GC

1、IHOP -XXより閾値より全体ヒープスタックメモリフットプリントは:InitiatingHeapOccupancyPercent(デフォルト45%)、G1古い世代を回収します

1.1、収集した後、または若い世代の巨大なオブジェクト割り当て後、このスペースをチェックしますが占め
1.2、若い世代の失敗は古いの古い全GCまたはGCをトリガーする推進

2、古い世代のコレクションはまた、両方の最初のマークの間に、STW若い世代が収集された実行と根探査の旧世代ます
3、同時マーク
4、再マーキング、STWのプロセスを、このプロセスはSTABアルゴリズムを使用しています。
5、ゴミ除去プロセス、STWの。

図3に示すように、混合したGC

1は、ガベージコレクションの中に、通常の若い世代は昔のパーティションの一部を再利用します。地域のより多くのゴミ(ごみが85%以上を占有し、複製アルゴリズム、オブジェクトの生存高い低効率)を好む、地域の古い世代の1/8の合計でCSETを加え
、ライブオブジェクト地域が95%に達したと仮定し、2しばらくコピーは、効率が非常に低いため、メモリの廃棄物の一部を可能G1は、その地域が集まり、-XX混合されることはありません。G1HeapWastePercent:デフォルト%を5
3、STW、その後、CSET地域の収集、使用、複製アルゴリズムで
4、下地域の旧世代の第二の1/8に行われ、若い世代のガベージコレクションが収集CSETに参加したら
、古い世代の地域のゴミ以下G1HeapWastePercent単年度中に生きて多数のオブジェクトをコピーし、効率が非常に低いです。この時点で、G1は、混合サイクルの終わりを決定するために収集されます。したがって、混合は、コレクションの8倍未満の数であってもよいです。

4、完全なGC

STW-スタイル、シングルスレッドのフルGC。フルGCはヒープ全体のマークの除去と圧縮を持って、そして最終的に純粋な生存オブジェクトが含まれています。

概要

カーディングして、再度追加した後、実装プロセスの詳細、~~~~

おすすめ

転載: blog.51cto.com/janephp/2429303