2012-02-17 16 views
3

JVMは大きな循環参照を見つけてオブジェクトを収集できますか?同じことを述べている公式文書/リンクはありますか?大循環参照のガベージコレクションについて、良い/悪い経験をしていますか?大きな循環参照とJVMガベージコレクタ

更新リンク:http://java.sun.com/docs/books/performance/1st_edition/html/JPAppGC.fm.html#997442

+2

はいです。どのようなドキュメントが必要ですか? – alf

答えて

11

簡略化して見ると、JVMは「Tracing Garbage Collection」というマークアンドアンドスイープを使用しています。循環参照は、「ベース」レベルから始まり、そこから到達できる要素を見つけるための参照を通って動作するため、このようなアルゴリズムの正しい動作に干渉しません。到達できないものは、収集/解放することができます。

JVMのガベージコレクタは、これよりもはるかに複雑であり、処理を高速化するために多くの最適化が行われています。つまり、マークアンドスイープアルゴリズムの一般的な特性は、それに対して真実であると言えます。

3

はい。 JVMのガベージコレクタは循環参照を処理できます。

JVMによって使用されるガベージコレクタは、参照カウントのガベージコレクタではありません。代わりに、まだアクセス可能な参照(すべてのスレッドのスタックまたは静的参照の参照)からトレースすることによってガーベジが見つかります。