2009-07-08 15 views
0
class Stage 
{ 

    Actor act1 = new Actor(); 
    Actor act2 = new Actor(); 
    Actor act3 = new Actor(); 

} 

Stage stg = new Stage(); 

このシナリオではガベージコレクションはどのように動作しますか?内部オブジェクトのガベージコレクション

stg = null; 

3つのオブジェクトはact1act2act3もガベージコレクト取得を作成したのだろうか?

答えて

0

各オブジェクトの参照カウントが0の場合、GCはそれらすべてを収集します。

1

はい。

ガベージコレクタが実行されると、古いオブジェクトへの参照がなくなり、クリーンアップされます。次に実行すると、他の3つのオブジェクトを参照するものがないことがわかり、それらもクリーンアップします。

概念的には、とにかく;私は、ほとんどのガベージコレクターが実際より少しスマートになり、1回のパスでそれらを取得すると確信しています。正確な仕組みは様々です。

+0

ですから、特に、内部オブジェクトをnullに設定する必要はありません。自動的にハンドリングされます。 ありがとう – krisp

+0

C#によると。オブジェクトをnullに設定すると、それがクリアされるまでの時間が長くなります。 –

0

これ以上参照がない場合はガベージコレクションになります。付属のEventListenerを外から取り除くことを忘れないでください。これは、参考として数えます(weak-referenceを使用していない限り)。

関連する問題