前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面向对象(三)-内存分析:堆与栈

面向对象(三)-内存分析:堆与栈

作者头像
孙寅
发布2020-06-02 15:50:59
4090
发布2020-06-02 15:50:59
举报
文章被收录于专栏:宜达数字宜达数字
1.内存

我们把内存分为堆空间和栈空间

栈空间比较小,但是读取速度快 堆空间比较大,但是读取速度慢

2.栈(stack)

内存中存储的是可变长度的数据区域,栈是自上向下进行填充,即由高内存地址指向低内存地址并且内存分配是连续的,C#中所有的值类型和引用类型的引用都分配在栈上,栈根据后进先出的原则,依次对分配和释放内存对象。

  • 栈的特征: 数据只能从栈的顶端插入和删除 把数据放入栈顶称为入栈(push) 从栈顶删除数据称为出栈(pop)
3.堆(heap)

内存中存储的是固定长度的数据区域。堆是从下往上分配,所以已用的空间在自由空间下面,C#中所有引用类型的对象分配在托管堆上,托管堆在内存上是连续分配的,并且内存对象的释放受垃圾收集机制的管理,效率相对于栈来说要低的多。

  • 堆的特征: 堆是一块内存区域,与栈不同,堆里的内存能够以任意顺序存入和移除
4.GC Garbage Collector垃圾回收器

CLR的GC就是内存管理机制,我们写程序不需要关心内存的使用,因为这些都是CLR帮我们做了。

GC

代码语言:javascript
复制
public class People
{
   int age;
   int height; 
}

static void Main(string[] args)
{
  People p ;  // 在栈中存储一个变量p,存储地址
  p = new People();  // new 关键字就是向系统要空间,根据后面的People来要要空间。存了两个int类型,所以是8个字节,但是C#针对类会分配8字节进行管理,所以总共开辟了16字节的空间
} 
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.内存
  • 2.栈(stack)
  • 3.堆(heap)
  • 4.GC Garbage Collector垃圾回收器
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档