在栈上,每个线程都有有限的内存量。
在堆上,堆空间没有OS定义为固定数量的空间大小来限制,他的空间大小由机器硬件和操作环境来定义。
对象的创建和删除要比在栈上访问内存慢一些。
托管的代码一般都是在堆上创建的,在创建一个对象以后,CLR通过指向下一个可用地址的指针来管理堆地址,优化了对象的创建。使用CLR创建对象的速度几乎和在栈上一样的快,
因为CLR不需要搜索一块空闲的内存来放置对象,在创建了新对象之后,托管的堆指针会直接移动到下一个内存块上,省去了未托管代码给对象分配内存时需要的搜索时间。
另外一个优点是对象是连续存储的,应用程序定位对象就会比把指针指向不连续的内存区域快得多。
浙公网安备 33010602011771号