最新消息:文章中包含代码时,请遵守代码高亮规范!

堆与栈 (转载)

iOS 黄, 艳承 117浏览 0评论
1.内存

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

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

2.栈(stack)

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

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

3.堆(heap)

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

  • 堆的特征:
    堆是一块内存区域,与栈不同,堆里的内存能够以任意顺序存入和移除

4.GC Garbage Collector垃圾回收器

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

原文链接:http://www.jianshu.com/p/f46f002c59fb

转载时请注明出处及相应链接,本文永久地址:http://blog.it985.com/22876.html


pay_weixin
pay_weixin
微信打赏
pay_weixin
支付宝打赏
感谢您对作者Jasmine的打赏,我们会更加努力!    如果您想成为作者,请点我

您必须 登录 才能发表评论!