zoukankan      html  css  js  c++  java
  • C#内存分配学习

    CLR内存分配分三大块区域:栈、GC堆、大对象堆。

    一、线程堆栈(栈)

    用于分配值类型实例。栈由操作系统进行管理,不受GC管理,当值类型不在其作用域(主要是指其所在函数内)时,其所占栈空间自动释放。栈的执行效率是非常高的。

    二、GC堆(堆)

    用于分配小对象实例。所谓小对象就是大小小于85000字节的实例对象。GC堆分三代垃圾进行管理,当进行GC操作(垃圾回收)时,垃圾收集器会对GC堆进行压缩回收。具体的GC操作(略)。

    三、大对象堆(LOH)

    用于分配大对象实例。大对象就是大小小于85000字节的实例对象。大对象分配在LOH上,不受GC控制,不会被压缩,只有在完全GC回收时才会被回收。

    注意

    a.栈的分配是向低地址扩展,而堆的分配是向高地址扩展。

    b.值参数与引用参数的本质,值参数是对栈中数据的拷贝,引用参数则是对栈地址的引用。当值参数为某引用对象时,可以改变该引用对象某些值,但不能将值改变成新对象的地址。

    c.堆中的对象都有同步块索引(占4个字节)、类型句柄(占4个字节)

    d.静态字段、静态方法不和方法所分配的方式与区域-----方法表

    Top
    收藏
    关注
    评论
  • 相关阅读:
    024.Zabbix告警等级机制
    023.Zabbix自定义(邮箱)脚本告警-02
    022.Zabbix自定义(邮箱)脚本告警01
    021.Zabbix的邮件告警-01
    020.Zabbix的Actions配置
    019.Zabbix的Trigger及相关函数
    018.Zabbix维护时间和模板导入
    017.Zabbix宏介绍
    016.Zabbix聚合监控
    015.Zabbix的日志监控配置
  • 原文地址:https://www.cnblogs.com/Joy-et/p/4200128.html
Copyright © 2011-2022 走看看