到達可能性分析アルゴリズムの前に、参照カウント方法があります。原理は非常に単純です。オブジェクトがどの参照にも関連付けられていない場合、基本的にオブジェクトは他の場所で使用できませんが、オブジェクトはリサイクル可能なオブジェクトになりますが、これは次の図に示すように、メソッドは非常に単純で効率的であり、循環呼び出しの問題を解決することはできません。
public class Main {
public static void main(String[] args) {
Demo d1 = new Demo();
Demo d2 = new Demo();
d1.o = d2;
d2.o = d1;
d1 = null;
d2 = null;
}
}
class Demo{
public Object o = null;
}
到達可能性分析アルゴリズム
このアルゴリズムのコアアイデア:「GCルート」と呼ばれる一連のオブジェクトを開始点として使用し、これらのノードから下向きに検索します。検索パスは「参照チェーン」と呼ばれます。オブジェクトがGCルートに到達すると、次のようになります。何も参照チェーンが接続されている場合(GCルートからオブジェクトに到達できない場合)、オブジェクトが使用できないことを証明します。
到達不能と判断されたオブジェクトは、必ずしもリサイクル可能なオブジェクトになるとは限らないことに注意してください。到達不能と判定されたオブジェクトがなければなりません通過した少なくとも2つのマーキングプロセスリサイクル対象になるために。2つのマーキング工程中にリサイクル対象になるために脱出の可能性がまだ存在しない場合、それは基本的にリサイクル対象となります。
Java言語では、GCルートとして使用できるオブジェクトは次のとおりです。