C# の次のクラスを検討してください。
class A
{
public B b;
}
class B
{
public A a;
}
後で:
{
A a = new A();
B b = new B();
a.b = b;
b.a = a;
}
質問: 実行がこのスコープから外れると、いずれかのインスタンスがガベージ コレクションされますか?
C# の次のクラスを検討してください。
class A
{
public B b;
}
class B
{
public A a;
}
後で:
{
A a = new A();
B b = new B();
a.b = b;
b.a = a;
}
質問: 実行がこのスコープから外れると、いずれかのインスタンスがガベージ コレクションされますか?
はい、どちらもそうします。GC は依存関係ツリーをたどり、プログラムの他の部分からはどちらにも到達できないことを確認し、それらを適切に破棄します。
これは優れた MSFT の記事です: http://msdn.microsoft.com/en-us/magazine/bb985010.aspx
はい、ガベージコレクションされます。 循環参照はメモリリークを引き起こしますか?