2012-01-17 14 views

答えて

12

スレッド参照、静的変数、クラス参照など常にアクセス可能とみなされる一連の「ルートオブジェクト」があります。これらのルートオブジェクトからの参照のリンクを介して到達できないオブジェクトがある場合、そのオブジェクトへの参照がいくつかあっても、そのオブジェクトはGCで使用可能であると考えられます。

0

GCアルゴリズムの詳細は実装依存Javaであるため、使用するVMによって異なります。しかし、ほとんどのVMは参照カウントを使用しません。公式のVMには、利用可能ないくつかの設定可能なアルゴリズムがあります。だからこれについて一般化するのは難しいです。

3

GarbageCollectorはJavaメモリモデルに基づいて動作します。利用可能なJavaアプリケーションでは、メモリは2つの部分に分かれています:ヒープとスタック。オブジェクトはヒープメモリに格納され、次の2通りの方法でアクセスできます。 -

1)オブジェクトには、スタックメモリに格納されている参照変数があります。この場合、オブジェクトは参照変数を使用して直接アクセスできます。

2)オブジェクトは他のオブジェクトに含まれる可能性があり、スタックメモリには参照がありません。この場合、このオブジェクトは、そのコンテナオブジェクトを使用することによってのみアクセスできます。したがって、コンテナオブジェクトがガベージコレクションされている場合、このオブジェクトはガベージコレクションの対象となる必要があります。

GarbageCollectを実行している間、GarbageCollectorは、オブジェクトがスタック内で使用可能な参照によって直接的または間接的にアクセス可能かどうかをチェックします。

関連する問題