美文网首页
对内存的几点笔记

对内存的几点笔记

作者: 天空中的球 | 来源:发表于2016-10-11 23:55 被阅读147次

内存是什么?或者先说内存有什么作用?

  • 用于暂时存放CPU中的运算数据
  • 以及存放与硬盘等外部存储器交换的数据

先清楚的是:CPU是用来处理、控制信息的,内存是用来存储信息的。

也就可以理解CPU在处理数据时,我们需要一个空间放这些数据,此时就是它啦。而内存里面具体也是有所划分的:

内存的五大块

由低地址向高地址依依说明:

  • 代码区: 指用来存放程序执行代码的一块内存区域。
  • 数据区:指用来存放程序中已经初始化的全局变量和静态变量的一块内存区域。
  • **BSS区: **指用来存放程序中未初始化的全局变量和静态变量 的一块内存区域。
  • **堆区: **指用于存放进程运行中被动态分配的内存段,是需要由程序员主动控制的,谁创建,谁释放。
  • 栈区: 指用户存放程序临时创建的局部变量的地方,此处是自动分配的,编译器需要的时候分配,不需要的时候自动释放和清除变量的内存区域。

重点来说: 栈、堆,可以从其区别来进一步理解

首先我们要区别一下,堆栈是分为数据结构中的堆和栈内存分配中的堆和栈,先简单对比下,数据结构中的堆和栈:

  • 堆: 它是指经过排序的树形数据结构,每个结点都有一个值。通常我们所说的堆的数据结构,是指二叉堆。堆的特点是根结点的值最小(或最大),且根结点的两个子树也是一个堆。
  • 栈: 它是一种具有后进先出性质的数据结构,也就是说后存放的先取,先存放的后取。

但实际上,我们此处要说的是内存分配中的堆和栈:

  • 1、申请方式和回收方式不同
    栈:系统自动分配空间的,同时也是自动回收的。
    堆:是我们自己根据需要自己申请的空间,回收当然是要看我们程序员什么时候释放,不释放就一直存在的。

  • 2、效率的不同
    栈:由系统自动分配,速度较快。但程序员是无法控制的。
    堆:是由我们自己分配的内存,一般速度比较慢,而且容易产生内存碎片不过用起来最方便。

  • 3、大小的不同
    栈:它是向低地址扩展的数据结构,是一块连续的内存的区域。它的最大容量是系统预先规定好的,所以栈获得的空间较小。
    堆:堆是向高地址扩展的数据结构,是不连续的内存区域。它的大小是受限于计算机系统中有效的虚拟内存,所以堆获得的空间相对比较灵活,也比较大。

另外就是像上面大致涉及到低地址和高地址,那所谓地址的偏移又是什么情况呢?

偏移地址:偏移地址就是计算机里的内存分段后,在段内某一地址相对于段首地址(段地址)的偏移量。以上是百度百科的解释。

另外了解下:存储器中每一个单元的地址可以用两种方法表示:

  • 1、逻辑地址:其表达形式为“段地址:段内偏移地址”。
    逻辑地址是内部和编程使用的、并不唯一。

  • 2、物理地址:CPU与存储器进行数据交换时在地址总线上提供的20位地址信息称为物理地址。
    物理地址是外部连接使用的、唯一的,它是“与地址总线相对应”。

在内存中的实际地址就是所谓的“物理地址”,而逻辑地址就是逻辑段管理内存而形成的。

对内存偏移之后有了大致印象后,就是下一个点:对指针偏移这块的问题进行了解啦...

PS常识:了解下 ROM 与 RAM 的区别。RAM是指手机内存,属于手机内部存储器,属于随机存储,速度高于ROM,对于手机配置性能起着重要的决定性。ROM则属于外部存储,可以简单的理解为手机硬盘。

备注参考:

http://www.jianshu.com/p/ea34be4ba625
http://www.cleey.com/blog/single/id/776.html
http://www.cnblogs.com/clover-toeic/p/3755401.html

相关文章

  • 对内存的几点笔记

    内存是什么?或者先说内存有什么作用? 用于暂时存放CPU中的运算数据 以及存放与硬盘等外部存储器交换的数据 先清楚...

  • 一、Java内存区域

    Java虚拟机在执行Java程序时会把它所管理的内存划分为若干个不同的数据区域。对每个内存区域关注以下几点:1)用...

  • 印象笔记和有道笔记的比较

    在写作的时候,需要整理分类资料中,我觉得有以下几点: 一、印象笔记有流量限制,有道云有内存限制 印象有1g免费流量...

  • iOS笔记-记录一次内存泄漏发现过程

    iOS笔记-记录一次内存泄漏发现过程 iOS笔记-记录一次内存泄漏发现过程

  • JavaScript学习笔记三

    JavaScript学习笔记三 个人学习笔记参考阮一峰的JavaScript教学类型转换,内存,深拷贝,关于内存的...

  • 内存泄漏汇总

    优化内存从以下几点搞起 内存泄漏 (未取消Handler发送的message、被静态引用) 大对象 (OOM)3....

  • JVM 内存方面

    基于深入理解JVM上个人笔记,不确定对。 1. 主要记录内存方面的,,, 管理的内存主要有:方法区、虚拟机栈、本地...

  • 对「读书笔记」系列的几点说明

    「读书笔记」是我文章的一个类别,也指每一篇具体的文章,写读书笔记的初衷是通过“书写”这个动作来深化自己对书籍的理解...

  • java 内存机制

    Java的内存机制有几点: 1.堆:主要负责保存创建的对象实例,GC主要操作堆空间,及时回收内存空间,以便它用。(...

  • 优化内存泄漏的几点分析

    很久很久没有写过文章了,割的时间有点长了,长的都让我忘却了学习.这里用小锤锤锤一下自己,咋就不知道学习啦! 好了废...

网友评论

      本文标题:对内存的几点笔记

      本文链接:https://www.haomeiwen.com/subject/rkdvyttx.html