程序在内存的存储

     今天忽然想到个问题,我们写的程序是怎么存储在内存里的?


计算机使用的是二进制,计算机为存储、组织这些二进制的数据定义了规则,也就是数据结构,常用的数据结构有数组、堆、栈、链表、散列表、队列等等。编程语言又把这些数据结构抽象成了自己的数据结构,数组、字典、哈希表、队列等等。代码使用的数据结构最后通过计算机的数据结构存储在内存中。


程序存储在虚拟机向操作系统要来的内存中,一般分为两个地方:程序存储区、数据存储区。我们写的代码会保存到程序存储区里面;而定义的一些全局变量,静态变量,局部变量之类的,就保存到数据存储区。程序员操作的主要是数据存储区。堆和栈都是属于这个区。


  •   栈,是系统自动分配和回收的,所以是有序、规范的。
  • 堆,是程序员分配的,一般由虚拟机回收,所以是自由、灵活的。
  •  栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放。
  • 堆则是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回收)。
  • 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。
  • 堆栈溢出指的是栈内存溢出,内存溢出指的是堆内存溢出。(一般来说)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值