问一个引用类型和其垃圾回收的问题,请大家指点!谢谢!
如下一个范类型列表,其中元素的数据类型为自定义的类MyClass
List <MyClass> _dataList = new List <MyClass> ();
而MyClass中又有引用类型的数据,比如假设又是一个范类型列表或其它,等等。
public class MyClass
{
List <MyOtherClass> data = new List <MyOtherClass> ();
}
那么对List <MyClass> 类型的变量_dataList的Add、Remove、Clear等操作,实际上引用类型的数据对象没并有真正删除。
那么这样会不会出现内存中引用对象只增不减,直到程序退出?如果是这样的话,那么不是存在很大的问题哟。不知道C#的垃圾回收问题是如何处理这点的。何时删除引用类型的对象?谢谢!
------解决方案--------------------List <MyClass> a = new List <MyClass> ();
List <MyOtherClass> b = new List <MyOtherClass> ();//比如这里创建的对象占用内存是X;
a.Add(b);
b=null;//这时X不会被回收,因为a[0]指向X
a.Clear();//这时已经没有引用指向X了,垃圾回收器会在下次执行回收的时候回收掉X