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 を使って事前読み取りアルゴリズムを学ぶ

ブログ    
ブログ    

推薦する

北京ソフトウェア協会が「人工知能委員会」の設立準備を進め、アジアインフォテクノロジーズの欧陽葉博士が委員長に選出される

10月26日、中国科学技術協会社会サービスセンターの支援を受けて、北京ソフトウェア情報サービス協会(...

...

AIプロジェクト開発における10の最も一般的な間違い

人工知能 (AI) モデルのトレーニングは単純に思えるかもしれませんが、そうではありません。 AI ...

マイクロソフトのGitHub Copilotサービスは大きな損失を被っていると報じられており、同社は独自のAIチップを開発してNvidiaに対抗する予定だ

10月10日のニュース、過去1年間、生成AIの流行は多くの企業に莫大な利益をもたらしました。最大の受...

ジェネレーティブAIがソフトウェア配信を支援する方法

レイチェル・レイコック約 2 か月前、私は Thoughtworks の CTO になりました。それ...

...

深い思考 | 大規模モデルの機能の限界はどこにあるのでしょうか?

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

2019年の人工知能レビュー:産業の発展は急速な進展を遂げている

2019年、中国の人工知能市場は「熱狂的」だった。IDCの統計によると、世界の人工知能市場規模は20...

GPT-4/Llama2のパフォーマンスを大幅に向上させるためにRLHFは必要ない、北京大学のチームはAlignerの新しいアライメントパラダイムを提案

背景大規模言語モデル (LLM) は強力な機能を発揮していますが、不快な応答、虚偽の情報、漏洩した個...

1日当たりの予算が508万だと、OpenAIは2024年までしか存続できないのでしょうか?

執筆者:Qianshan最近、海外メディアAnalytics India Magazineによると、...

素晴らしいツールです!機械学習のためのテキスト注釈ツールとサービス 10 選

この記事は、公開アカウント「Reading the Core」(ID: AI_Discovery)か...

インテリジェントなデザインの4台の馬車が牽引する蘇寧木牛のクリエイティブな共有

[51CTO.comより] 蘇寧木牛は蘇寧人工知能研究開発センターが設計したインテリジェントデザイン...

SAPはイノベーションで顧客の成功を支援し、AI時代のデータ主導のビジネス変革の未来を形作ります

SAP は、AI 時代において顧客がデータの潜在能力を最大限に活用し、より深い洞察、より速い成長、よ...

ニューラルスタイル転送アルゴリズムで絵を描くことを学習する人間は、芸術分野で人工知能に負けるのでしょうか?

人工知能はますます多用途になり、すでに私たちの仕事のすべてを人工知能が引き継ぐことができるようです。...

2030年にAIは人間のためにどんな仕事を創出できるでしょうか?

[[201234]]編集者注: 人工知能は多くの人の仕事を奪うだろう、これはメディアの報道でも事実...