JVMメモリリコール究極難解:ガベージコレクションアルゴリズム

[この記事では、最初の技術的なブログをJavaのように思われたコードに ]:jdkcb.com/

はじめに:

我々は、オブジェクトが死んであると判断され、かつ言及したJavaのガベージコレクション局は、開発の年を経験したどのように言うことを言ってナンセンスの枯渇についての記事は、発明されたJavaの経験死ん楽器一気に普通のJavaオブジェクトを解決するため、 、そして犠牲者、有意な回復困難な問題の検討が満場一致で賞賛されているJava仮想マシンの一般的な管理のすべての指導者。エヘンは、ポイントの横に、当然のことながら、これだけのアーティファクトは、十分なJavaのガベージコレクションの局がないされ、より簡単にガベージコレクションを実行するJVMのために、年間最優秀組織賞を受賞、また7にJavaのガベージアップを発明集合的に呼ばれる回収装置、:

ごみリサイクル対象機器!(ドリームサウンド)

では、「ごみ、コア技術の習得信仰」を、そしてゴミリサイクル対象デバイスはまた、アルゴリズムの4つの原則によって駆動され、それらは:

マーク - スイープアルゴリズム、複製アルゴリズム、ソートアルゴリズムマーク、世代コレクションアルゴリズム。

基本的な概念:

生存期間によってJavaのカーブ世代のガベージコレクションアルゴリズムのJavaヒープは二つの領域、オブジェクトを格納するために使用される新しい世代、オブジェクトを格納するために使用される古い世代の1に分割されています。

新世代:もっと理解しやすいの新世代、私は特に童謡(面白い)を作っ:

​ 新生代,新生代

小さなオブジェクトは、高速で死にます

それあなたは有毒。

古い世代:長時間オブジェクトを生きる特に人。

マーク - スイープアルゴリズム(マークスイープ):

マーク - スイープアルゴリズム、すべてのガベージコレクションのアルゴリズムは、最も基本的なもので、アルゴリズムの前に集まり、他のゴミで兄弟です。波が、それは、アルゴリズムの再マークビーチクリア波の前にプッシュされ、開発の法則として、私たちのほとんど、アルゴリズムの背後にあるたくさんのがマークに基づいています - スイープアルゴリズムの改善が来ます。

マーク - スイープアルゴリズムは、特定のリサイクルプロセスは、このようなものです(あなたが入れTuoliaokuziしない。)最初のマークであり、その後、アルゴリズムクリア:

  • すべてのオブジェクトが回復する必要がマーキング
  • 完了マークした後、これらのオブジェクトは、均一なリサイクルをマークされています

彼はしませんでした、またはそうでなければ簡単にそれらを使用します。

しかし同時に、単純なを達成も、主に二つの点に焦点を当てた追加的な問題の多くをもたらしました:

  • まず、最初は、あなたが、オブジェクトを見つけるために、彼らは章をカバー与えるために、そしてその後すぐに確かに、鍋の側面ではなくクリアする一つずつ持っているので、これら二つのプロセスの効率自体明確な標識が、高すぎないです。
  • Java仮想マシンがするときにリサイクルする必要がメモリ内のオブジェクトがそのように、あなたが回復するのを待つ隣同士に並んでますが、メモリに散在、明確されていないため、第二の問題は、スペースの使用であり、子どもの実行の子、その後、回復に行き、オブジェクトが全体に散らばっているので、私たちは回復は、この小さなメモリが空で見ることがそうである終え、メモリのビットが空であるので、上に行くだろうメモリにつながる、比較的大きなオブジェクトは、システムが連続したメモリのような大規模なブロックを見つけることができない、メモリを割り当てる必要があるときに、メモリの小さな塊ですああ、システムが非常に心配して見つけることができないので、彼は前進していましたまた、ガベージコレクションのルーチンをトリガします。

これは、デンバー(劉王ジュ)ギャングから描画、おそらく長い道のりです図:

IMG

このような結合テキストの外観は、より多くを理解することは容易ではありません。

レプリケーションアルゴリズム(コピー):

マークは - アルゴリズムをクリアした後、乙女座は立つことができませんでした。

乙女座:あなたはどのようなもの、メモリの完全な回復という混乱、私はそれがきちんとできない、法律を見ていないああ、母親、きちんとしたどのように良い人であるあなたの回復を見てください。

だから、複製アルゴリズムがされて入ってきました。(純粋にナンセンス、真剣にそれを取ることはありません)

1が出て実行するのメモリは、まだ生きて置くとき、このアルゴリズムは、メモリ容量が2の同じサイズの2つに分割されているに基づいて、すべての時間は、私は、1、維持するために他のものを使用しませんその後、コピー別の部分までのオブジェクト、およびはかつて彼女の、直接のクリアこれを使用し、シンプルかつ粗製の効率的な動作を、それはメモリの回復時間の全体の塊なので、どのようなメモリの断片化の問題があることは存在しないため、が、空きがありません昼食は、一定の価格を支払うためにも行う、つまり、私は、メモリの100Mを持っていた、そして今、私は一度だけ50Mを使用しています。

それはあなたがホットストリップの全体のパックを持っているようだが、一度だけ、悪い考え、あなたは半分袋を食べてみましょう。

レプリケーションアルゴリズムは、それは一般的にリサイクルの新世代のための主要なターゲットである、となぜですか?そのため、新世代、高速で死にます

オブジェクトの新しい世代はすぐに離れて回収されるので、一般的に、我々は分未満に従っていませんので、ホットスポットの仮想マシンは、メモリを3つに分割されている、、、1は比較的大きなエデン(エデンの園)であり、2つの比較的あなたが回復する必要があるときに小さなサバイバー(生存者)スペース、エデンと遺族とのそれぞれは、これら2つのメモリ生きているオブジェクトは、ちょうど掃除、1時間で別の遺族にコピーして、直接エデンを使用していますそして、遺族スペース。ホットスポット仮想マシンで、8エデンとサバイバーデフォルトの割合:1は、後エデンとサバイバーとの比率を変更するために、仮想マシンのパラメータを変更することにより、私の細心のブレーンストーミングのようなコンピューティング後(誰かがオーケーカウント) 、ホットスポット仮想マシン内のわずか10%のメモリ廃棄率の新世代でこの割合複製アルゴリズム、上記確かにはるかに低いより50パーセントと。

あなたはサバイバー小さなスペース言っていない、二つのメモリのライブオブジェクトは、単一の遺族にコピーされて、待って、生存者はZenongケースに収まります。あなたは今困惑、私はあなたがどのように参照してください。

私は、私はそれを取ることができませんしませんでした遺族は、十分なスペースでない場合、JVMが割り当て保証の概念を導入し、これらのオブジェクトは、保証メカニズムを割り当てることによって、古い年に直接移動します。再生されているどのように特定の配布保証については、あなたは私を傷つける手を打つ、関連情報がハを見てアクセスすることができます(力を強制的に低い声で、あなたはよく明確な把握、ブーイングを持っていません)。

その複製アルゴリズムのパフォーマンスとても甘いので、なぜの古い地域をリサイクルするために使用することはできませんか?

あなたが考える、古い何、Java仮想マシンの長寿村は、通常、一般的にコピー・アルゴリズムは見て前方に置く、死ぬことはありません

ニマは、まだ生きています

そして、過去の古いオブジェクトのコピーを生きるの多くは、状況はおろかなし死んで、極端な条件です。

次のようにはい、コピーアルゴリズムは次のとおりです。

IMG

マーク - 照合アルゴリズム(マーク・コンパクト):

ソートアルゴリズム、私は**アルゴリズム「兄弟は** Kaokaoの端にある」として、それを取った - 古いやり方に対するドゥさんは何も、タイトルはそれがマークされ、それは確かに存在し、書き込まれていません。

ソートアルゴリズムと実際のマークで- - 、ああマークをコピーする-スイープアルゴリズム同様の原理ではなく、直接メモリの統合に、しかし、聞かせてマーク-呼び出されないマーカーので、なぜ、ソートアルゴリズムは、特に適し歳の兄弟は、エッジにありますKaokaoこれらは弟の隣にされた後の古い生き残ったオブジェクトはなど、側に移動させて、直接離れてクリア直接メモリの残りの部分に、一緒に移動しました。

IMG

世代別コレクションアルゴリズム:

異なる新世代へのオブジェクトの生存対象の期間と世代コレクションアルゴリズムの利点の古いの二種類に応じ世代アルゴリズム実際にそのセクションの前で何も新しいことを、このアルゴリズムの基本的な考え方という、世代コレクションアルゴリズムアルゴリズムにコピーして、私は古い世代のマークを使用し、(再び)私たちは、このような新世代のように異なるオブジェクトに基づいて、さまざまなガベージコレクションのアルゴリズムを使用することができるように、右の薬を達成するために高速死ぬことです - ソートアルゴリズム、またはマーク - クリア回復するアルゴリズム。

これ以上

これは実際にチャートませんでした

要約:

この記事では、私たちのガベージコレクションのアルゴリズム四リトルドラゴンズは、また、人々が彼らの理解を深め助けるために、このようなスパイシーなストリップとしての例を挙げたと言うことは、より注意を払っています。ガベージコレクションのアルゴリズムの4種類の長所と短所を持っているので、7一般的に使用されるガベージコレクタを得、記事のガベージコレクタ、のは、後半再び更新してみましょう。

あなたは、マルチポイントの更新をすることができますか?

もっと気にしないでください、あなたは、ああ、私に従ってください。

私はあなたが心配です

良いです

私は漢の数、我々の次の記事さようならです。

おすすめ

転載: juejin.im/post/5d5ca0fbf265da03e921cdde