在.NET环境下,类对象的分配并不是分配在OS维护的原始内存中。相反,在每个宿主物理进程中,CLR都会预先分配一个特殊的内存堆,叫托管堆。这个堆的作用和传统的OS堆相似,都是为对象和数据分配内存。每次执行new操作符的时候,CLR都会从托管堆中分配出内存。 托管堆是一个很长的内存空间,CLR始终维护着一个指向下一个可用堆地址的指针,当new一个对象的时候,该CLR就会把当前指针指向的可用地址分配给新对象,并向前移动指针。这种方式和传统的分配方式相比,内存分配的速度会快得多。在非托管环境下,对象分配的内存是本地os堆。os通过一个可用内存块链表管理内存。当os需要分配内存的时候,都会遍历该表以寻找到下一个足够大的内存块...