首页 技术 正文
技术 2022年11月9日
0 收藏 885 点赞 4,139 浏览 668 个字

之前对栈(stack)和堆(heap)的认识很模糊,今天看了一篇关于堆栈的文章《译文—C#堆VS栈》后,仿佛有种拨开云雾见青天的感觉,当然只是一些浅显的理论的认识,这里做一些简单的记录,方便自己记忆理解,同时也可以供大家参考!

1.栈(stack)和堆(heap)的事例理解

在内存中,栈(stack)和堆(heap)可以理解为两个存储容器。

是一个先进后出顺序排列的容器,比如一垛蒸笼包(如图1-1),最后一笼是最后放上去的,只有把最后一笼吃完或拿出来,才能继续吃下面的,依次执行。

也是按一定顺序排列的容器,比如你的衣橱(如图1-2),排放是整洁有序的,但是你拿任意一件衣服,不用动其他衣服,能快速的拿到我们想要的衣服。

c#中栈和堆的理解             c#中栈和堆的理解

图1-1                                                                               图1-2

2.堆和栈上的垃圾回收机制

栈有自我维护特性,执行完语句马上释放不会造成资源泄漏。

堆需要GC(垃圾回收器 Garbage Collection)不定时的回收已不再使用的资源则需,并且符合GC回收的规则,很多堆上的内容在程序退出前都没有被回收,很可能是无意中某处还保留着内容的引用导致,这将严重影响性能,GC回收一般发生在程序内存不够用时,否则不会发生,除非手动调用GC强制执行回收资源。

3.栈(stack)和堆(heap)中存储的数据类型

这里的数据类型特指值类型(基本数据类型,结构,数组)和引用类型(类,string,object,接口,委托)。

值类型存储在栈或堆中取决于声明的位置,引用类型总是存储在堆上。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,095
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,571
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,418
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,191
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,826
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,909