四、对于计算机内存的理解

首先简单理解一下计算机的体系结构:

 

  • 这里计算机硬件中CPU有个寄存器,寄存器也是存储器的一种 ,寄存器主要用来暂存指令,位址,和数据,是一种有限的高速存储部件;我们通常说的内存我理解为包含RAM(随机存储器,数据不能做到持久化,但是高效,空间资源有限)和ROM(数据可以做到持久化,但是效率不高,空间资源大);但是在其他有些资料上将Cache(高速缓冲存储器)也划进来了,因为Cache本质就是用RAM实现的,所以我认为没必要品将他划到内存中。

  • 说完了寄存器和内存,接下来就该进入正题说一说他们在代码中的关系了,首先得明确:程序是运行在内存中的 ,当程序没有启动时,是安装在ROM中的,当你运行时系统会将程序拷贝到RAM,在RAM中去执行代码,所以执行代码关键在RAM中。

    代码运行在RAM中分为5个区块:

    1. 堆区(heap)

      堆区存放的主要是程序员自己new出来的对象,手动开辟的空间都放在堆区,需要手动释放空间,地址分配由低到高

    2. 栈区

      栈区是编译器自主分配的一块变量存储区域,需要时就创建,不需要时就销毁,全程由编译器自主控制,栈的特点是先进后出且是一块连续的存储地址空间,所以它的地址分配是由高到低。栈区主要存储的是局部变量或者方法中的参数,或者理解为栈中存放的是一个一个的方法,方法结束就将其弹出并释放内存。

    3. 静态/全局区

      此区分为两大块:数据段和bss段

      数据段:数据段存放初始化过的静态变量或者全局变量

      bss段:bss段存放未初始化的静态变量或者全局变量,也就是说bss是不分配内存地址的,它的作用是记住变量需要多少空间大小

    4. 常量字符串区

      该区域存放的常量字符串,const,final等

    5. 代码区

      存放的是程序代码,有些架构可以进行代码的更改

  • 了解代码在内存的结构后需要知道是如何同cpu工作的

    1. cpu从RAM中读取或者向RAM中写入都需要借助操作系统完成

    2. CPU寄存器执行命令是一些变量基本都会存放在Cache中,需要的时候都会先从Cache中去取,如果没有才会从内存(RAM或者ROM中去寻找)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值