#このチュートリアルの動作環境: Windows7 システム、Java8 バージョン、DELL G3 コンピューター。JVM ガベージ コレクション アルゴリズム: 1. 「Mark-Clear」アルゴリズム; まず、リサイクルする必要があるすべてのオブジェクトをマークし、マークが完了した後、マークされたすべてのオブジェクトを均一にリサイクルします。 2. アルゴリズムをコピーします。メモリを 2 つの同じサイズのブロックに分割し、一度にそのうちの 1 つだけを使用します。 3. 「Mark-Organization」アルゴリズム; 4. 世代別収集アルゴリズム。
2 つの概念:
新世代:ライフサイクルの短いオブジェクトが保管される領域。 旧世代: ライフサイクルの長いオブジェクトが保存される領域。
1. マーククリア アルゴリズム
実行手順:マーキング: メモリ領域を走査し、リサイクルする必要があるオブジェクトをマークします。
##欠点:
#効率の問題; メモリ空間が 2 回横断されます (1 回目はマークされ、2 回目はクリアされます)。
スペースの問題: 大量のメモリ フラグメントが生成されやすく、より大きなメモリが必要な場合、要件を満たすピースが見つからないため、GC を再度開始する必要があります。
メモリを 2 つの同じサイズのブロックに分割し、そのうちの 1 つだけを使用します。毎回の作品。ブロックが使い果たされてGCが発生すると、ブロック内に残ったオブジェクトが別の領域にコピーされ、不要なメモリが一気にクリアされます。次回 GC がトリガーされると、そのブロックの残っている部分がこのブロックにコピーされ、その後そのブロックが消去され、このサイクルが繰り返されます。 #図:
##利点
#マーククリーン アルゴリズムと比較して、メモリの断片化の問題を解決します。
より効率的です (メモリをクリーンアップするときに、最初と最後のアドレスを覚えて、一度に消去します)。
欠点:
# 研究によると、新世代のほとんどのオブジェクトは「生きて死ぬ」、つまりライフ サイクルが非常に短く、オブジェクトの寿命が長くなるほど、リサイクルが難しくなります。 GC が発生すると、再利用する必要があるオブジェクトが多く、生き残るオブジェクトはほとんどないため、別のメモリに移動する必要があるオブジェクトはほとんどないため、メモリ空間を 1:1 に分割する必要はありません。代わりに、新世代全体が 8:1:1 の比率で 3 つのエリアに分割され、最大のエリアはエデン エリアと呼ばれ、2 つの小さなエリアはそれぞれ To Survivor および From Survivor と呼ばれます。
最初の GC では、Eden の生き残ったオブジェクトのみを To にコピーする必要があります。その後、エデン地域全体がリサイクルされます。再度GCが発生した場合は、残っているEdenとToをFromにコピーし、この作業を繰り返します。このようにして、各新しい世代で使用可能なメモリは新しい世代全体の 90% を占め、メモリ使用率が大幅に向上します。 [関連する推奨事項:古い世代: 複数回のリサイクル試行 (デフォルトは 15 回) に耐えたオブジェクトを新しい世代に保管します。
3. マーク – 照合アルゴリズム以前のコピー アルゴリズムは、オブジェクトの生存率が比較的高い場合にコピーを続けるためです。 . やって来て過去をコピーすることは無意味であり、時間の無駄です。そこで、高齢者向けに「マーキングソート」アルゴリズムが提案された。
実行ステップ: マーキング: リサイクルする必要があるものにマークを付ける
組織: 残っているオブジェクトを移動させますメモリへ ファイルの一端を移動し、未使用のメモリを直接クリーンアップします。
#図:
現在、ほとんどの商用仮想マシンはこの世代別コレクション アルゴリズムを使用しています。このアルゴリズムには新しい内容はありません。オブジェクトの生存時間に基づいてメモリを新しい世代と古い世代に分割するだけです。このようにして、対応するアルゴリズムさまざまな分野に採用できます。例: MinorGC と FullGC の違い MinorGC: 新しい世代で発生するガベージ コレクション。新しい世代では、MinorGC が非常に頻繁で、リサイクル速度が比較的速く、毎回のリサイクル量も多くなります。 プログラミング関連の知識について詳しくは、プログラミング ビデオをご覧ください。 !
FullGC: 古い世代で発生するガベージ コレクション (MajorGC とも呼ばれます) は比較的遅く、MinorGc よりも約 10 倍遅くなります。 FullGC には通常、複数の MinorGC が伴います。
以上がJVM ガベージ コレクション アルゴリズムとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。