zoukankan      html  css  js  c++  java
  • C#堆和栈

    堆与栈都是内存空间的一部分,其中,堆又可以分为托管堆和非托管堆。托管堆和栈由 CLR 管理。

    这里的堆(heap)是托管堆(managed heap)的简称。顾名思义,它由 CLR 进行管理。

    它是在运行程序时,CLR 申请的一块内存空间。它基于进程,属于进程内存空间的一部分。

    当创建新对象时,若该对象是引用类型或者包括引用类型的值类型,就会在 GC 堆上申请空闲的内存空间,CLR 会先计算需要的空间大小。如果堆上已经没有剩余空间了,就触发一次垃圾回收。如果回收之后仍然无法获得足够的剩余空间,则掷出 OutOfMemory 异常。

    GC 堆维护一个叫做 NextObjPtr 的指针,指向 GC 堆的下一个可用地址。为了尽量合理利用空间,GC 堆的内存分配是连续的。当垃圾收集结束之后,由于有些空间被释放,内存可能出现碎片,此时,会进行压缩,将内存重新变回连续状态。

    这里的堆(heap)是托管堆(managed heap)的简称。顾名思义,它由 CLR 进行管理。

    它是在运行程序时,CLR 申请的一块内存空间。它基于进程,属于进程内存空间的一部分。

    当创建新对象时,若该对象是引用类型或者包括引用类型的值类型,就会在 GC 堆上申请空闲的内存空间,CLR 会先计算需要的空间大小。如果堆上已经没有剩余空间了,就触发一次垃圾回收。如果回收之后仍然无法获得足够的剩余空间,则掷出 OutOfMemory 异常。

    GC 堆维护一个叫做 NextObjPtr 的指针,指向 GC 堆的下一个可用地址。为了尽量合理利用空间,GC 堆的内存分配是连续的。当垃圾收集结束之后,由于有些空间被释放,内存可能出现碎片,此时,会进行压缩,将内存重新变回连续状态。

    参考:

    http://c.biancheng.net/view/3070.html

    https://www.cnblogs.com/zd1994/p/4424329.html

  • 相关阅读:
    JQuery -- this 和 $(this) 的区别
    js动态生成表格
    Sublime 3 如何使用列编辑模式
    新版Sublime text3注册码被移除的解决办法
    Sublime text 3 格式化HTML/css/js/json代码 插件
    mingw64 构建 Geos
    C++调用Python浅析
    linux下挂载VHD等虚拟磁盘文件
    linux 下Qt WebEngine 程序打包简单记录
    C++ UTF8和UTF16互转代码
  • 原文地址:https://www.cnblogs.com/zwh1993/p/11248838.html
Copyright © 2011-2022 走看看