.NET中不需要程序员自己摧毁物件,而是资源收集器(Garbage Collector)来摧毁物件。GC会周期性地自动执行,并收回没有被引用的物件。
.Net中GC模式采用的是分代,堆空间按对象的生存周期长短分为3代。新分配的对象在第0代,按地址顺序分配,当第0代的空间用光时,将程序里能引用到的对象移动到第1代,那么剩下的就是垃圾,第0代空间便可以重新用于分配。同理,第1代也按同样的逻辑运行,那么第2代里的对象将都是生存期很长的对象。这样回收的时间开销大于分配时间开销,不会出现很多碎片的问题,利于程序的运行,使循环引用的对象能够被正确的回收。
以此可见,资源回收器是个很好用的机制。程序开发人员不需要再做记忆管理的工作;降低了Run-time Error,还有其它的记忆体问题。