RAM*_*RAM 1 .net c# garbage-collection
我有三个对象A,B和C. C是A和B的子.C引用了A和B. A和B引用了C.我明白当A和B都引用C时删除后,C变为垃圾,将由GC收集.
public class A { public C Cr { get; set; } }
public class B { public C Cr { get; set; } }
public class C
{
public A Ar { get; set; }
public B Br { get; set; }
}
class Program
{
static void Main(string[] args)
{
var oa = new A();
var ob = new B();
var oc = new C();
oc.Ar = oa;
oc.Br = ob;
oa.Cr = oc;
ob.Cr = oc;
// Some operation
oa.Cr = null;
ob.Cr = null;
//is the following code required?
// if yes, what is the benefit?
oc.Ar = null;
oc.Br = null;
}
谢谢
内存
如果没有对C的实时引用,则它有资格进行垃圾回收.这并不意味着它会立即被垃圾收集.
如果该对象即将符合垃圾回收条件,则无需在对象内设置对null的引用.
请注意,如果没有对A,B或C的"根"引用,即使它们继续相互引用,它们也都有资格进行垃圾回收.
归档时间: |
|
查看次数: |
556 次 |
最近记录: |