扩大
缩小

C#中应用程序的垃圾回收器管理和内存的分配与释放

.NET Framework的垃圾回收器管理和内存分配与释放.
当在应用程序中new出新对象的时候,运行库就会在托管堆中为其分分配一定的内存空间,只要托管堆中有存储空间就会一直分配下去,但是内存是有一定容量的,这@"G:\MyDemo就需要垃圾回收器对内存中的对象进行管理.
     new出的新对象进行分配空间的过程:要先分析实例化字段所需空间,对象所需空间包括两部分,同步块索引和类型对象指针;分配物理内存,新对象指针指向下一个可用内存区域.
垃圾回收标记:对在线程堆栈中有指针的对象进行标记,释放那些没有标记的对象,调整存在对象的位置.
垃圾回收过程:微软引进一种机制进行垃圾回收管理,0代分配256K ,1代分配2M,2代分配10M.首先一直在托管堆中的0代添加对象例如当添加到五个的时候0代空间用完,则触发0代回收机制,对其中无标记的对象进行释放,然后将0代剩下的对象放入1代中,将将要添加的对象存入0,继续往0代添加对象当0代空间再次用完时,就又触发0代垃圾回收机制,将无标记的对象释放,再将其余对象添加到1,0代再向1代添加而此时1代也无存储空间,则触发1代垃圾回收,先将1代中无标记的对象释放,然后再将1代中剩余的对象添加到2代中,将要0代的对象添加到1代中,继续往0代添加对象如此往返循环.
posted @ 2013-03-18 13:30  翟中龙  阅读(320)  评论(0编辑  收藏  举报