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 代添加对象如此往返循环 .

你可能感兴趣的:(垃圾回收)