C#中垃圾回收器如何释放内存
How garbage collector releases memory in C#
代码如下所示。
public class clsMisc : IDisposable {
List<clsEmployee> lst = new List<clsEmployee>();
void Add(){
lst.Add(obj);
//Adding to it list here
}
public void Dispose()
{
lst = null;
}
}
上面的class是这样调用的,
Using( clsMisc obj = new clsMisc()){
//Here goes the code
}
一旦它离开 using 范围,就会调用 clsMisc 中的 dispose 方法,并在那
我们分配了空值。
是否会释放存储在内存中的值(列表中 clsEmployee 的现有记录)并分配新值,或者创建一个新的 List 实例并分配空值?
因为我是新手,所以无法理解这种行为。
有人可以指导我吗?
你根本不必担心它,因为收集器相当聪明,而且因为它是一种托管语言,你真的应该随它去吧。
收集器将决定何时需要进行清理,因此无法保证何时完成工作。
但是如果你对强制收集死心塌地,你可以调用 GC.Collect
代码如下所示。
public class clsMisc : IDisposable {
List<clsEmployee> lst = new List<clsEmployee>();
void Add(){
lst.Add(obj);
//Adding to it list here
}
public void Dispose()
{
lst = null;
}
}
上面的class是这样调用的,
Using( clsMisc obj = new clsMisc()){
//Here goes the code
}
一旦它离开 using 范围,就会调用 clsMisc 中的 dispose 方法,并在那 我们分配了空值。
是否会释放存储在内存中的值(列表中 clsEmployee 的现有记录)并分配新值,或者创建一个新的 List 实例并分配空值?
因为我是新手,所以无法理解这种行为。
有人可以指导我吗?
你根本不必担心它,因为收集器相当聪明,而且因为它是一种托管语言,你真的应该随它去吧。
收集器将决定何时需要进行清理,因此无法保证何时完成工作。
但是如果你对强制收集死心塌地,你可以调用 GC.Collect