G1ガベージコレクタの基礎知識と原理分析 - 見てみましょう
主な特徴
1. 地域に応じてブロックに分割し、各ブロックに S、E、O、H のマークを付けます
2. コストパフォーマンスに応じてリサイクルし、各ブロックの回収スペースと時間を個別にカウントし、コストパフォーマンスに応じて分別します。
3.ユーザーの一時停止時間を指定して、ガベージ サイズを動的にリサイクルできます。デフォルト 200ms
欠点がある
世代を越えた参照がある場合はどうすれば解決できますか?
若い世代の地域に関しては、その都度リサイクルしていきますので、若い世代が古い世代を指すという意識は必要ありません。
古い世代から若い世代への参照をどのように選択するか (そうでない場合は、ヒープ全体の GC ルート スキャンを使用します)、ここで提案されているアイデアはメモリ セット rset (セットを記憶する) であり、G1 は領域ごとに rset を維持します。 、
メモリ独自の領域へのポインタは一元的に維持され、マーク ポインタはそれらのカード ページの範囲内にあります。G1 は多くの領域を使用する (各領域には rset がある) ため、G1 は比較的多くのメモリを使用し、基本的にコレクタの作業を維持するためにJava の追加メモリの 10% ~ 20% を占有します。