オブジェクトを決定するために、Javaのガベージコレクション方法は、アルゴリズムを生き延び

ガベージコレクション:

        時間からヒープの到達不能オブジェクトをクリーンアップするための時間に。到達不能オブジェクトとすぐにリサイクルを指示するではない、Javaプログラムでガベージコレクションは自動的に行われ、プログラマは間違いなく回復しなければならない、役に立たないされているメモリの一部を判断することができたとしても、強制することはできません、プログラマは、メモリブロックを解放するためにガベージコレクタを強制することはできません。プログラマが行うことができますガベージコレクタ「をお勧めします」、それが実行できるかどうか、実行されたときに、彼らはすべて不明であるためには、System.gcの道を呼び出すことです。これは、ガベージコレクタの主な欠点です。もちろん、このような欠点の観点からプログラマへの多大な利便性に関して悪いものを上回るされます。

到達不能オブジェクトは:オブジェクトが到達不能オブジェクトでは生きていけない、使用され続けていない、参照するために継続されていません

ユーザのユーザ=新しいユーザー();

ユーザー= NULL; //ユーザーが到達目標ではありません

 

System.gc();

        回復するためにガベージコレクタのための勧告が、実行かどうか、時間が不確実です

 

確定():

        方法内のオブジェクトオブジェクト、ファイナライズ()メソッドは、ガベージコレクタがこのオブジェクトを呼び出す前にオブジェクトを削除することです。サブクラスは、システムリソースを整理するため、このメソッドをオーバーライド、または他のいくつかのクリーンアップ作業を行います。

サブクラスは、オーバーライドシステムリソースを整理したり、その他のクリーンアップ作業を実行するためにファイナライズ()メソッド。

 

新世代、古い年

 

 

2:1は、Javaヒープは新世代、古い時間、1デフォルト率に分けることができる   パラメータ値をすることができ -XX:NewRatioは、指定します

2、及び生存(S0)から、に、新世代領域エデンに分けることができ 、生き残り(S1) 、デフォルトエデム:から:= 8 :. 1 :. 1(パラメータ-XXによって:設定SurvivorRatio)

3は、ほとんどの場合、オブジェクトが最初のオブジェクトがまだ生きているならば、通過するたびに後の面積S0またはS1を入力し、回復の新世代後、エデン地域に割り当てられているオブジェクトが増加してその年齢を生き残るためであれば、回復の新世代1(15)の後に、オブジェクトは、古い時代に入り、その後、一定の年齢に達しました。

 

決意の対象の生存:

    参照カウントが排除されている:()

         オブジェクトがない場合、任意の基準点は、廃棄物とみなすことができます。この方法の欠点は、ループの存在を検出することができないことです。
         まずメモリ参照カウントアルゴリズムを管理することを選択しなかった内部の少なくとも主流のJava仮想マシンを宣言する必要があります。 
         何をカウントすると、参照アルゴリズムである:1により、いつでもその場所への参照、カウンタ値、オブジェクトのカウンタへの参照を追加し、失敗を参照するときに、カウンタはカウンタ値がもはやオブジェクト0である任意の時点で1だけ減少しますこれは、使用されています。なぜ、主流のJava仮想マシンは、内部のこのアルゴリズムが行う選択しませんでしたか?最も重要な理由は、オブジェクト間の相互循環参照の問題を解決することは困難であるということです。

   ルート検索アルゴリズム
         の基本的なアイデアルート探索アルゴリズムは、これらのノードから下方に検索を開始するために、出発点として、「GCのルーツ」と呼ばれる一連のオブジェクトを介している、と呼ばれる検索パスは、参照チェーン(参考チェーン)を横断し、場合オブジェクトは、任意の基準GCルーツ鎖に接続されていない場合、それは、この被験体が利用可能でないことを証明しています。
         オブジェクトがGCルーツ鎖(への参照を持っていない場合、アルゴリズムの基本的な考え方は、参照のチェーンを起点として「GCのルーツ」と呼ばれる一連のオブジェクト、これらのノードから下方に探索と呼ばれる探索経路トラバースされますそのオブジェクトが到達不能であることは、GCのルーツ)、このターゲットが利用できないことを証明します。
        Java言語では、次のカテゴリのGCRootsオブジェクトとして:
       (1)仮想マシンスタック参照オブジェクト(スタックフレーム内のローカル変数、ローカル変数テーブルと呼ばれる)を。
       (2)プロセス領域静的プロパティクラスオブジェクト参照。
       (3)オブジェクトは、メソッド定常領域を参照します。
      (4)ネイティブメソッドにJNI(ネイティブメソッド)参照されたオブジェクトをスタック。

     素人の面では、ローカル変数の仮想マシン・スタックを確認することです、メソッドゾーン静的プロパティ、定数だけでなく、ネイティブメソッドが参照しているオブジェクトがないスタック...

1,2,4,6-オブジェクトインスタンスがGCのルーツアクセシビリティ、つまり、ライブオブジェクト、GCを回復することができないオブジェクトを持って描くことができます。 
直接通信は3,5オブジェクトが、なしGCルーツであるGCルーツ到達不能なオブジェクトであり、これは、それに接続されているが、例えば、GCガーベッジオブジェクトを再利用する必要があります。

 

おすすめ

転載: www.cnblogs.com/pickKnow/p/11116797.html