日期:2008-02-29  浏览次数:20480 次

Aiyiweb.Com提示:GC的全称是garbage collection,中文名称垃圾回收,是.NET中对内存管理的一种功用。垃圾回收器跟踪并回收托管内存中分配的对象,定期执行垃圾回收以回收分配给没有无效援用的对象的内存。当使用可用内存不能满足内存请求时,GC会自动进行。

GC的全称是garbage collection,中文名称垃圾回收,是.NET中对内存管理的一种功用。垃圾回收器跟踪并回收托管内存中分配的对象,定期执行垃圾回收以回收分配给没有无效援用的对象的内存。当使用可用内存不能满足内存请求时,GC会自动进行。

    在进行垃圾回收时,垃圾回收器会首先搜索内存中的托管对象,然后从托管代码中搜索被援用的对象并标记为无效,接着释放没有被标记为无效的对象并收回内存,最后整理内存将无效对象挪动到一同。这就是GC的四个步骤。

由上可见,GC是很影响功用的,所以普通说来这种事情况还是尽量少发生为好。

    为了减少一些功用影响,.NET的GC支持对象老化,或者说分代的概念,代是对象在内存中绝对存现时期的度量单位,对象的代数或存现时期说明对象所属的代。目前.NET的垃圾回收器支持三代。每进行一次GC,没有被回收的对象就自动提升一代。较近创建的对象属于较新的代,比在使用程序生命周期中较早创建的对象的代数低。最近代中的对象位于零代中。每一次GC的时候,都首先回收零代中的对象,只要在较低代数的对象回收完成后仍不能满足需求的情况下才回收较高代数的对象。