美文网首页
程序运行时的分区

程序运行时的分区

作者: 天lc呐 | 来源:发表于2017-12-15 20:46 被阅读0次

堆(heap):堆是用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减。当进程调用malloc等函数分配内存时,新分配的内存就被动态添加到堆上(堆被扩张);当利用free等函数释放内存时,被释放的内存从堆中被剔除(堆被缩减)

栈(stack):栈又称堆栈, 是用户存放程序临时创建的局部变量,也就是说我们函数括弧“{}”中定义的变量(但不包括static声明的变量,static意味着在数据段中存放变量)。除此以外,在函数被调用时,其参数也会被压入发起调用的进程栈中,并且待到调用结束后,函数的返回值也会被存放回栈中。由于栈的先进先出特点,所以栈特别方便用来保存/恢复调用现场。从这个意义上讲,我们可以把堆栈看成一个寄存、交换临时数据的内存区。

BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域。BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配。

数据段:数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。

代码段:代码段(code segment/text segment)通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读,某些架构也允许代码段为可写,即允许修改程序。在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。

相关文章

  • 8.C(内存管理)

    在程序没有执行前,有几个分区已经确定,不过分区虽然确定,但是没有加载内存,程序只有运行时才加载内存 text(代码...

  • 程序运行时的分区

    堆(heap):堆是用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减。当进程调用mallo...

  • 【JAVA】深入理解虚拟机之虚拟机类加载机制

    Java程序运行时,数据会分区存放,JavaStack(Java栈)、 heap(堆)、method(方法区)。 ...

  • Java程序员必须了解的java内存模型

    Java程序运行时,数据会分区存放,JavaStack(Java栈)、 heap(堆)、method(方法区)。 ...

  • Java虚拟机

    1.内存分区(运行时数据区域) ※线程私有区(每个线程运行时独享的内存区域) (1)程序计数器 线程所执行字节码的...

  • 11张图让你看懂Java的内存模型!

    1.内存模型 & 分区 Java虚拟机在运行Java程序时,会管理着一块内存区域:运行时数据区 在运行时数据区里,...

  • mapreduce论文第三部分

    运行时系统保存输入数据分区的细节。调度程序在集群的不同机器上执行,对失败任务进行处理,管理集群内机器之间的通信。 ...

  • Java内存布局

    下图是Java虚拟机运行时的数据区: 接下来分区进行详细的介绍: 1.程序计数器: 较小的内存区域,可看作当前线程...

  • 从磁盘分区到文件系统

    磁盘 柱面扇区:512字节 分区 主分区、扩展分区、逻辑分区MBR:主引导程序(446)、分区表(16 * 4)、...

  • 操作系统-存储管理

    为什么内存要分区?分区有哪些类型? 内存分区是为了方便地支持多程序运行。分区管理分为固定分区和可变分区,固定分区是...

网友评论

      本文标题:程序运行时的分区

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