JVM:ガベージコレクタとメモリ割り当て戦略

三枚GCが行われる必要があります:

どのようなメモリは、リサイクルする必要がありますか?ときに回復?どのようにリサイクルするには?

プログラムカウンタのJavaランタイムメモリ領域、仮想マシンスタック、ネイティブメソッドは、スレッドをオフにして、スレッド生まれ三つの領域、スタックの正常実行のための入り口と出口メソッドのスタックフレームを有するとにスタックとスタックスタック操作。どのくらいのメモリほぼ確定あたり知ら各割当フレームのフレーム構造タイプ、そう領域のメモリの割り当てと回復が確実に提供されます。Javaヒープおよびメソッド領域は同じではありません、インタフェースの実装クラスの複数のメモリが異なる場合があり、複数のブランチは、メモリの方法を同じである必要はないかもしれない、私たちは、作成されるかを知るために、プログラム中に実行オブジェクト、このメモリの割り当てと回復は、GC大きな懸念のつまり、この部分動的です。

 

どのオブジェクトがリサイクルすることができます。

参照カウントアルゴリズム:1プラスの参照、マイナスシンプル達成するための1時00分障害が発生するが、循環参照があるかどうかが問題なので、Java仮想マシンがこのルートを取ることはありません。

到達可能性解析アルゴリズム:主流は主流のプログラミング言語は、オブジェクトが生きているかどうかを判断するために、到達可能性解析に使用され得ます。基本的なアイデアは、これらのノードから下方に検索を開始するために、出発点として、「GCのルーツ」と呼ばれる一連のオブジェクトを介して行われ、参照のチェインが横断検索パスは、次に、オブジェクトは、任意の参照GCルーツ・チェーンに接続されていない際に参照されますこのオブジェクトは使用できません。図は次のとおりです。

 

 

Javaオブジェクトは、GCルートの役割を含めることがあります。

1. VMのスタック参照オブジェクト

オブジェクト参照領域クラスの静的プロパティに記載の方法。

前記方法エリア定数オブジェクト参照

4.ネイティブメソッドは、ネイティブ主題の方法の参照をスタック。

 

 

リサイクル法のエリア:

ヒープでは、特に新しい世代に、従来のアプリケーションは、一般的に70から95パーセントをガベージコレクションを再利用することができます

ガベージコレクションのアルゴリズム:

1.マーク - スイープアルゴリズム:マークとスイープを2つの段階に分けて、最初のマークすべてのオブジェクトを回収した後、オブジェクトがマークリサイクルする必要があります。

1効率であり、第二、クリア後に切り離さメモリの断片を大量に生成されます:2つの問題があります。

2.コピーアルゴリズム:それは上の別のものに生き残ったオブジェクトをコピーし、メモリを使い果たしたときに使用可能なメモリは、その都度それらの一つだけを扱う2つのサイズに分割され、その後、使用メモリクリーンアップ後、彼らは瓦礫の複雑さを考慮していません。シンプルで効率的な、半分のメモリを犠牲にしました。

今、仮想マシンは新しい世代を回復するために、このコレクションのアルゴリズムを使用しています。メモリ空間を分割して1比:新世代オブジェクトChaosheng XIの98%は、それが1を必要としない、死にます。しかし、メモリエデンスペースと生存スポット小さなスペース、各使用エデン一人の生存者のより大きな部分に分割されます。ホットスポットの夜エデン:1:生存者は8です

3.マーク - 照合アルゴリズム:

コピー照合アルゴリズムのコピー操作が高い生存率で複数のオブジェクトを行うことになる、効率が低下しますが、キーはあなたがスペースを無駄にしたくないです、追加のスペースがによって使用されるメモリを対応する保証が割り当てられますすべてのオブジェクトは、極端な状況を生き抜いてきたので、古い時代には、一般的に、直接このアルゴリズムを選択していません。

どこ歳でのマーカーの使用 - アルゴリズム仕上げ:アルゴリズムと明確に、タム以降の手順などは、直接クリーンアップするオブジェクトをリサイクルしますが、すべてのライブオブジェクトが最後に移動されに、端末境界の外側に直接メモリを一掃されていません。

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

現在のガベージコレクションの事業の仮想マシンは、世代のコレクションを実装します。メモリの生存期間は数に分割して、誰に応じて:それは新しい世代と古いです:これは最後の十年の種類の特性に基づいて最も適切な収集方法することができます。

新世代:古い年:ためオブジェクトの高い生存率を、クリーンアップのアルゴリズムを整理するためのマーカーまたはタグを使用して多数のオブジェクトがコピーアルゴリズムを使用して、生存の少量死んでしまうので。

 

ホットスポットのアルゴリズム:

列挙ルートGCルート:

作業が一貫したスナップショットを確保することができなければならないので、第3の期間の実装の到達可能性分析はまた、GCポーズに反映され、オブジェクトの参照関係の状況を分析するプロセスはまだ表示されない進化していますポイントは、次に、解析精度の結果を保証することができない、満たされていません。これは時にすべてのスレッドのGC停止につながる必要があります

安全ポイント:のみ特定の場所に、ちょうどスレッドを停止、この位置は、安全なポイントセーフポイントと呼ばれています。

地域の安全保障:地域の安全保障は、コードフラグメントの部分は、参照関係は、このようなブロックされたスレッドのスリープ、として、変更されませんです。

 

ガベージコレクタ:

 

 

 

シリアルシリアルコレクタ

新世代のために。

      レプリケーションのアルゴリズムを使用して、シングルスレッドのコレクションを、それが完了するまで、ガベージコレクション、スレッドがすべての作業を中断しなければならないとき。

シナリオ

      ホットスポットは、まだクライアント・モード新生代コレクタでデフォルトです。

      また、他のローカルコレクタよりも優れてあります。

    (他のシングルスレッドコレクタと比較して)単純かつ効率的、

        シングルスレッドの最大収集効率を達成するために、単一CPU環境、コレクター(ハンドオーバ)オーバーヘッド相互作用シリアル番号スレッドを規定します。

        ユーザーのデスクトップアプリケーションのシナリオでは、使用可能なメモリが(百M Mに十)一般に小さく、ガベージコレクションは、比較的短期間に完了することができます(MS MSの数十以上百)、彼らはこの中で頻繁に発生しません。それは許容され

ParNewコレクター:

ParNewガベージコレクタはシリアルコレクタのマルチスレッド・バージョンです。

機能

      マルチスレッドに加えて、挙動、特性及びシリアルコレクタの他の部分と;

  単一CPU環境では、理由のスレッドの相互作用のオーバーヘッドのSerailのコレクタよりも良い結果があるでしょう

並列スカベンジコレクタ

ParNewコレクタといくつかの類似した特徴があります。

      コレクターの新世代。

      レプリケーションのアルゴリズムを使用しました。

      マルチスレッドのコレクション。

主な機能は次のとおりです。他のコレクターと異なるの懸念

      CMSおよび他のコレクタの焦点は、可能な限りユーザの休止時間ガベージコレクタスレッドを短縮することです。

      並列の清掃は、ターゲットコレクタは、特定の(スループット)まで制御されます。

シリアル・オールド・コレクター

年の古いです。

      「マーク - 仕上げ」アルゴリズム(ならびに圧縮、マークスイープコンパクト)。

      シングルスレッドのコレクション。

パラレルオールド・コレクター

パラレルパラレル旧スカベンジガベージコレクタは、古いのコレクターのバージョンです。

CMSコレクタ

同時マーククリーンアップも同時低いポーズコレクタ(同時ローポーズコレクター)または低レイテンシ(低遅延)ガーベジコレクタとして知られている(同時マークスイープ、CMS)コレクタ。

機能

      年の古いです。

      「マーク - スイープ」に基づくアルゴリズム(圧縮動作は、メモリの断片化を行いません)。            

      最短目標復旧時間のために一時停止します。

      同時コレクション、低一時停止。

G1コレクタ

 

(ガベージ・ファースト)は、商業的なコレクタを起動する前にJDK7-U4です。

同時と並列に(A)、

      あなたは環境の中で、マルチCPU、マルチコアハードウェアの利点をフルに活用することができます。

      並行して、「世界を止め、」一時停止時間を短縮します。

      並行ガベージコレクションも同時にユーザプログラムを聞かせすることができます。

(B)、世代コレクション、コレクションの古いものと新しい世代には、    

ガベージ・コレクション・アルゴリズムの様々なC)、空間的な統合ではなく、断片化

      全体的に、それはマークに基づいています - 照合アルゴリズム。

      (2つの地域間の)ローカルからの複製アルゴリズムをベースに、参照してください。

      これは、類似した列車のアルゴリズムの実装です。 

      メモリの断片を生成しません、それは長時間実行を助長しています。

(D)、予測可能なポーズ:低休止高いスループットを達成しながら

      G1での低一時停止の追求に加えて、だけでなく、予測可能なを確立する時間モデルを住みます。

      Mは、明示的に時間がかかるガベージコレクションは、Nミリ秒を超えていない、ミリ秒のタイムスライスを指定することができます。

      あなたは独立して、他のコレクターと混合することなく、全体のGCヒープ(古いものと新しい世代の)を管理することができます。

      これは、異なる時間に異なる方法で処理することができます。

 

参考ます。https://www.cnblogs.com/cxxjohnson/p/8625713.html

 

メモリの割り当てと回復の戦略:

マイナーGCを行うために割り当てられた十分なスペース、仮想マシンがない場合、ゾーンをエデンエデン地域に割り当てられたオブジェクトのほとんどのケースでは、新世代、。

マイナーGCは:新世代のガベージコレクションのアクションを指し、

主なGC /フルGCは:古いGCの出来事を指し、

直接、古い時代に大きなオブジェクト。中国は大きな目的は、長い文字列や配列として、Javaオブジェクトの連続したメモリ空間の多くを必要です。

オブジェクトの長期生存率は、古い年を入力します:いくつかの(デフォルト15)minorGCがまだ生き後のオブジェクトは、古い時代に入ります場合。

おすすめ

転載: www.cnblogs.com/hankuikui/p/11479621.html