Javaのガベージコレクションアルゴリズム、原則として頻繁に尋ねたインタビュー

オリジナルリンク: https://blog.csdn.net/qq_39089301/article/details/87368991

彼の名前のような最も基本的なアルゴリズム、「マーク・クリア法」はアルゴリズムが「クリア」フェーズで、「マーク」の段階、2つの段階に分けています。彼があるため、後続のアルゴリズムが彼の改善得に基づいており、ほとんどの基本的なアルゴリズムを演奏していること、

明確な効率で標識が高くないときまず、一方、回復後に個別のスペースデブリが多数存在します、プログラムはに連続したメモリのチャンクを割り当てる必要があります後につながる:彼は、主に2つの欠点を有していますしかし、我々は、早期に十分な連続メモリ内の別のガーベッジコレクション動作を見つけなければなりませんでした

レプリケーションアルゴリズム:

効率の問題を解決するために、それは「複製アルゴリズム」であったので、それは、2つのサイズに応じて、同じメモリ容量に分けることができ、このメモリが使い果たされたとき、一つだけを使用し、またなど、オブジェクトの別の部分を生き残ります大容量のメモリ、そして最終的にメモリ空間を一掃するために使用されてきました。だから、それぞれが半分しかメモリ回復、スペースデブリやその他の問題のメモリ割り当てを検討する必要はありませんがあります。しかし、これはメモリの半分を犠牲にするために支払われ、コストが高すぎます。

しかし、ガチョウ、そして今、私たちは「死に向けて生の夜」の新世代のための商用の仮想マシンは、新世代を処理するために、このアルゴリズムを使用していているので、1必要はありません。配布する1の比率を、しかし内部はエデンのより大きな部分に分かれています生存者と二つの領域、各領域生存エデンを用いて前記ガベージコレクション、コピーエデンは別の未使用の生存領域に生存使用されるオブジェクトを生き残る場合。8のホットスポットのデフォルトエデンとサバイバー比:1、相対的な1よう:メモリ1廃棄物の半分、私たちはメモリの10%を無駄にしました。

私たちは、サバイバー・メモリ領域が十分でない場合に、各ポストは、それゆえ、対象の10%以下を生き残るた後、私たちは保証を割り当てるために、古い年に頼る必要があることを保証することはできません

印象の下でこれらの言葉の最高のちょうどデジャヴを見た後うねりを深めます。ps(推進ハンドル)。

二次元コードを有する突きます

640?wx_fmt = PNG

二次元コードを有する突きます

法律を整理するタグ

あなたが半分のメモリ空間を無駄にしたくない、欠陥のあるコピーアルゴリズムは、オブジェクトの高い生存率は、我々は大規模なコピーを行うために必要がある場合、効率が低下するということですが、キーは、あなたがオブジェクトに対処するための追加的な保証を割り当てる必要があり極端な場合に「古い愚か者」している、それはコピーアルゴリズムを持つ高齢者には適していません。

明確なラベリング処理でマークされた照合アルゴリズムを、マーキング古いバンドの特性によると、前ではなく、直接、フォローアップの手順をクリアするために、しかし、生き残ったオブジェクトが最後に移動され、最終的に境界の外側に直接メモリを一掃と同じです。

世代別コレクション

生存サイクルオブジェクト異なるオブジェクトによれば、メモリは、数個に分割されています。Javaヒープは、一般的に最も適切なアルゴリズムに従って、各歳とバンドの新しい世代に分かれています。例えば、少数の生き残りガベージコレクションのそれぞれの新しい世代で、「整理するタグ」「クリアアウトマーク」や、あなたが使用しなければならないという保証、追加のメモリ空間が存在しない、旧世代では、オブジェクトが長く生きている、copyメソッドを使用します。

640?wx_fmt = PNG

おすすめ

転載: blog.csdn.net/zhupanlinch/article/details/102739928