JVMの基本的なガベージコレクションアルゴリズムについて

JVMの基本的なガベージコレクションアルゴリズムについて

この記事は JavaEye ブログからの引用であり、元のタイトルは「JVM チューニングの概要 (パート 3) - 基本的なガベージ コレクション アルゴリズム」です。

前回は、データ型、ヒープとスタック、Java オブジェクトのサイズと参照型など、JVM の基本的な概念をいくつか紹介しました。以下では、JVM のガベージ コレクション アルゴリズムについて説明します。ガベージ コレクション アルゴリズムは、さまざまな観点から分類できます。

基本的なリサイクル戦略によれば

参照カウント:

古いリサイクルアルゴリズム。原則として、このオブジェクトには参照があり、それによってカウントが増加し、参照を削除するとカウントが減少します。ガベージ コレクション中は、カウントが 0 のオブジェクトのみが収集されます。このアルゴリズムの最も致命的な問題は、循環参照の問題を処理できないことです。

マークスイープ:

このアルゴリズムは 2 段階で実行されます。最初のステージでは、参照ルート ノードから始まるすべての参照オブジェクトをマークし、2 番目のステージではヒープ全体を走査してマークされていないオブジェクトをクリアします。このアルゴリズムではアプリケーション全体を一時停止する必要があり、メモリの断片化が発生します。

コピー:

このアルゴリズムは、メモリ空間を 2 つの等しい領域に分割し、一度に 1 つの領域のみを使用します。ガベージ コレクション中、現在使用されている領域が走査され、使用中のオブジェクトが別の領域にコピーされます。このアルゴリズムは、使用中のオブジェクトのみを毎回処理するため、コピーコストは比較的小さくなります。同時に、コピー後にメモリを適切にソートできるため、「断片化」の問題は発生しません。もちろん、このアルゴリズムの欠点も明らかです。つまり、メモリスペースが 2 倍必要になるということです。

マークコンパクト:

このアルゴリズムは、「マーク アンド スイープ」アルゴリズムと「コピー」アルゴリズムの両方の利点を組み合わせたものです。これも 2 つのステージに分かれています。最初のステージでは、ルート ノードから始まる参照されているすべてのオブジェクトをマークします。2 番目のステージでは、ヒープ全体を走査し、マークされていないオブジェクトをクリアし、生き残ったオブジェクトをヒープの 1 つの部分に「圧縮」して、順序どおりに配置します。このアルゴリズムは、「マークアンドスイープ」アルゴリズムの断片化の問題を回避し、「コピー」アルゴリズムのスペースの問題も回避します。

治療方法によって分けられる

増分収集: アプリケーションの実行中にガベージ コレクションを実行するリアルタイム ガベージ コレクション アルゴリズム。何らかの理由で、JDK5.0 のコレクターはこのアルゴリズムを使用しません。

世代別収集: オブジェクトのライフ サイクルの分析に基づくガベージ コレクション アルゴリズム。オブジェクトは若い世代、古い世代、永久世代に分けられ、異なるライフサイクルでオブジェクトをリサイクルするために異なるアルゴリズム (上記の方法のいずれか) が使用されます。現在のガベージ コレクター (J2SE1.2 以降) はすべてこのアルゴリズムを使用します。

システムスレッド別

#t#シリアルコレクション: シリアルコレクションでは、単一のスレッドを使用してすべてのガベージコレクション作業を処理します。マルチスレッドのやり取りが不要なため、実装が簡単で効率が高くなります。ただし、複数のプロセッサを活用できないという制限も明らかであるため、このコレクションはシングルプロセッサ マシンに適しています。もちろん、このコレクターは、データ量が少ない (約 100 MB) マルチプロセッサ マシンでも使用できます。

並列コレクション: 並列コレクションでは、複数のスレッドを使用してガベージ コレクション作業を処理するため、処理が高速かつ効率的になります。理論的には、CPU の数が多いほど、並列コレクターが発揮できる利点は多くなります。

同時実行コレクション: シリアル コレクションや並列コレクションと比較すると、前 2 つはガベージ コレクションを実行するときにオペレーティング環境全体を一時停止する必要があり、ガベージ コレクション プログラムのみが実行されます。そのため、ガベージ コレクション中にシステムは明らかな一時停止状態になり、ヒープが大きくなるにつれて一時停止時間が長くなります。

<<:  携帯電話の通話は安全ではない、GSM暗号化アルゴリズムが破られた

>>:  Wu Fengguang: Linux を使って事前読み取りアルゴリズムを学ぶ

推薦する

90年代のアンティークコンピューターでCNNをトレーニングしました

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

Java プログラミング スキル - データ構造とアルゴリズム「フィボナッチ検索」

[[398011]]基本的な紹介フィボナッチとは、線分を 2 つの部分に分割し、一方の長さと全体の...

労働者はなぜ人工知能を恐れるべきなのでしょうか?

人工知能の概念は何年も前から存在しています。SF映画に出てくるような高度なロボットはまだ登場していま...

AIが建物の快適性に革命を起こす

商業ビルでは、顧客と居住者の快適性がポジティブな体験を保証するために重要です。快適さの重要な要素は、...

北京で百度脳産業イノベーションフォーラムが閉幕、AIの文脈でインテリジェント政府業務を解読

近年、人工知能(AI)の急速な台頭と各産業への応用は、社会経済の生産構造と生産関係に破壊的な影響を及...

TikTok本社は米国に残り、ByteDanceが管理権とコアアルゴリズムを保持する

事情に詳しい関係者らは、米政府に提出した提案に基づき、バイトダンスがティックトックの本社を米国内に維...

LLM の 3 つの大きな欠点のうちどれをご存知ですか?

科学: 未来の知覚を持つ汎用 AI は、永遠に慈悲深い存在とはほど遠く、個人データをすべて貪り尽くし...

テンセントが業界初のAIセキュリティ攻撃マトリックスを発表、リスク排除が辞書を引くのと同じくらい簡単に

近年、人工知能は急速に発展し、家庭、金融、交通、医療などさまざまな分野に深く融合し、人々の生活はより...

2020 年の世界トップ 10 AI ガバナンス イベント

[[378054]]現在、新世代の人工知能技術は世界中で急速に発展し、ビッグデータ、ブロックチェーン...

AppleはApp Storeのアプリランキングアルゴリズムを変更する可能性がある

北京時間4月19日朝のニュースで、モバイル広告ネットワーク関係者は、AppleがApp Storeの...

大規模モデルを路上に展開するための重要なステップ: 世界初の言語 + 自動運転オープンソースデータセットが登場

DriveLM は、データセットとモデルで構成される言語ベースのドライブ プロジェクトです。 Dri...

...

全光自動運転ネットワーク、F5G全光スマートシティの共同構築

新たなインフラ、都市のデジタルガバナンス、政府と企業のデジタル変革、デジタルホームの急速な発展に伴い...

スマートシティAIソフトウェア市場は2025年までに700%成長

ビデオ監視はAI導入の注目分野だが、新型コロナウイルス感染症のパンデミックにより、公衆衛生への対応を...