GC的全稱是garbage collection,中文名稱垃圾回收,是.NET中對內存管理的一種功能。垃圾回收器跟蹤並回收托管內存中分配的對象,定期執行垃圾回收以回收分配給沒有有效引用的對象的內存。當使用可用內存不能滿足內存請求時,GC會自動進行。
在進行垃圾回收時,垃圾回收器會首先搜索內存中的托管對象,然後從托管代碼中搜索被引用的對象並標記為有效,接著釋放沒有被標記為有效的對象並收回內存,最後整理內存將有效對象挪動到一起。這就是GC的四個步驟。
由上可見,GC是很影響性能的,所以一般說來這種事情況還是盡量少發生為好。
為了減少一些性能影響,.NET的GC支持對象老化,或者說分代的概念,代是對象在內存中相對存現時期的度量單位,對象的代數或存現時期說明對象所屬的代。目前.NET的垃圾回收器支持三代。每進行一次GC,沒有被回收的對象就自動提升一代。較近創建的對象屬於較新的代,比在應用程序生命周期中較早創建的對象的代數低。最近代中的對象位於零代中。每一次GC的時候,都首先回收零代中的對象,只有在較低代數的對象回收完成後仍不能滿足需求的情況下才回收較高代數的對象。