💂 个人网站: 【紫陌】【笔记分享网】
💅 想寻找共同学习交流、共同成长的伙伴, 请点击【前端学习交流群】
程序所有的数据,也就是所有的变量,都是存储在内存中的。
静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。它主要存放静态数据、全局数据和常量。
栈空间比较小,但是读取速度快
堆空间比较大,但是读取速度慢
例如:栈就是商店,堆就是仓库,商店面积比较小找东西比较快。仓库面积大,放的东西也多,找起来也慢。
栈的特征:
数据只能从栈的顶端插入和删除
把数据放入栈顶称为入栈(push)
从栈顶删除数据称为出栈(pop)
内存中的栈,是由系统管理的
例如:就好像一口井,每次往里面丢一块大石头,假设石头足够大,每层就只能放一块石头,那最后放的石头就在最上面,如果要把石头全部拿出来,最后放的石头最早被拿出来。
堆
堆是一块内存区域,与栈不同,堆里的内存能够以任意顺序存入和移除
GC Garbage Collector垃圾回收器
CLR的GC就是内存管理机制,我们写程序不需要关心内存的使用,因为这些都是CLR帮
我们做了。
画了两个红X 的data1和data2就是数据用完后续不用了,就会被垃圾回收器回收。不回收的话堆满了,后续的新数据就进不来了
这里的某些概念,只需要了解和知道的,不需要知道内在核心原理,我们知道汽⻋的引擎
是汽⻋的核心动力来源,我们不需要知道引擎是怎么造。
同样,上述是编译器开发者的事情。