想象我有:
List<MyObject> MyList = new List<MyObject>();
MyObject obj1 = new MyObject();
MyObject obj2 = new MyObject();
MyList.Add(obj1);
MyList.Add(obj2);
Does a
MyList.Clear();
删除实例化的:'obj1','obj2'?或者它们保留在内存中但列表现在是空的?
只要您拥有对对象的引用并且可以在代码中访问它,它就位于内存中,并且垃圾收集器不会收集它。所以答案是不,它们保存在内存中
您可以阅读有关垃圾收集的更多信息here http://msdn.microsoft.com/en-us/library/ee787088.aspx.
如果代码是这样的
List<MyObject> MyList = new List<MyObject>();
MyList.Add(new MyObject());
MyList.Add(new MyObject());
然后当你打电话时MyList.Clear()
你没有参考你创建的MyObject
因此垃圾收集器将收集它们并在下次运行时从内存中删除它们。
如果你想删除obj1
and obj2
清除列表后从内存中您应该使用
obj1 = null;
obj2 = null;
GC.Collect()
但要注意强制垃圾收集的后果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)