オブジェクトクラスが死んだと役に立たないクラスであるかどうかを確認する方法

JVMのガベージコレクションが実行されると、まず最初に行うには、このように何の変数参照、およびそのようなオブジェクトの回復を持っていない、これらのオブジェクトを見つけることです。
だから、JVMがオブジェクトを決定する方法であることで死亡したのか?
 

まず、参照カウント
参照オブジェクトが参照変数をそれぞれ有するプログラムカウンタに加算され、カウンタがインクリメントされます。オフ言及するときはカウンタが減少します。カウンタは何の変数の参照にそれを表現しない、0である場合は、オブジェクトは死の状態であり、JVMは、そのようなオブジェクトの回復が必要です。

シンプル、高効率を達成するために、参照カウント方式。しかし、主流の仮想マシンの大半は、このカウントアルゴリズムが互いに循環参照を持っているこれらのオブジェクトを回復することはできませんので、このようなオブジェクトが実際に使用されなくなったが、理由はお互いへの参照をカウントするために、このメモリ管理アルゴリズムを取るませんでした、各カウンタにつながる従ってそれらはJVM回収することができない、ゼロではありません。

 

 

第二に、到達可能性分析は、
これらのノードから下方に検索を開始するために、出発点としてGC根のシリーズを作成したオブジェクトが、チェーンを連結GCルーツへの参照を持っていないとき、呼び出される検索パスは、参照のチェーンを横断しました到達不能GCのルーツにこのオブジェクトつまり、その後、JVMなどのオブジェクトは、後に回収される、このターゲットが利用できないことを証明します。

ほとんどの主流のJVMようなアルゴリズムは、オブジェクト参照の間で循環の問題を解決することができ、メモリを管理するために使用されています。オブジェクトと基準周期、それらがルーツ鎖をGCに全く参照しない、またはシステム間のオブジェクトは、それらがリサイクル可能なオブジェクトであると判断しません。

 オブジェクトは、これらの2つの方法によって決定された場合には何の変数の参照にそれらを持っていない、JVMは、適切なタイミングで、このようなオブジェクトの回復になります。

 

回収方法の主なエリアは役に立たないクラスは、どのクラスがそれのような無用であれば言うことでしょうか?
定数は比較的簡単である「一定の廃棄物」か否かが判定され、かつクラスがあるかどうかを判断し、「役に立たないクラスは」比較的多くの過酷な条件です。クラスは「役に立たないクラス」とみなされるためには以下の3つの条件を満たしている必要があります

クラスのすべてのインスタンスは、クラスのインスタンスが存在しないJavaヒープである、回収されています。
ロードクラスのクラスローダは、回収されました。
クラスオブジェクトに対応するのjava.lang.Classはないどこにでも反射クラスにアクセスする方法によって、任意の場所で参照されていません。
仮想マシンは、上記の3つの条件が回収されている種類の無用会うことができ、単に、使用ではなくオブジェクトとしてよりもなく、必然的にリサイクルされます「も」である、ここで述べました。

 

おすすめ

転載: www.cnblogs.com/luxianyu-s/p/11726211.html