现在的位置: 首页 > 综合 > 正文

.NET中的堆区和栈区

2017年10月30日 ⁄ 综合 ⁄ 共 433字 ⁄ 字号 评论关闭

        1).NET中栈(stack)的空间是内存自维护的,即用完即清除;

  2).NET中堆(seap)的空间的需要垃圾回收器回收释放。而垃圾回收器启动回收工作的时候,会暂停你程序的所有线程,然后根据一定的算法找出没有不再在程序中使用的对象并删除它们。然后GC会重新组织堆中所有剩下的对象来节省空间,并调整栈和堆中所有与这些对象相关的指针。这个过程是很耗费性能的,显然会比内存自动管理栈中的值类型的空间费劲的多。

       3).NET Framework 的垃圾回收器管理应用程序的内存分配和释放。每次您使用 new 运算符创建对象时,运行库都从托管堆为该对象分配内存。只要托管堆中有地址空间可用,运行库就会继续为新对象分配空间。但是,内存不是无限大的。最终,垃圾回收器必须执行回收以释放一些内存。垃圾回收器优化引擎根据正在进行的分配情况确定执行回收的最佳时间。当垃圾回收器执行回收时,它检查托管堆中不再被应用程序使用的对象并执行必要的操作来回收它们占用的内存。

抱歉!评论已关闭.