Linux进程的堆

进程的地址空间中有很大的一块区域是被称作“堆”的区域
其地址空间是在进程的.data和.bss的地址增长方向到动态库区域的低地址部分的范围
技术分享
技术分享
堆可以理解成是进程的一大块内存区域(已经分配实际物理内存,但并不是所有的地址空间都分配了物理内存,其大小根据系统类型和版本来定)
用来供进程中的程序动态分配内存空间
通常,进程通过向操作系统批发一大块实际的内存空间交给glibc管理以提高动态内存请求和释放的效率
在程序要请求动态分配比较小的内存空间的时候,glibc从这一大块内存空间中分配之
当程序要请求动态分配较大的内存空间的时候,由操作系统通过相应的系统调用来实现。
因为堆的特点是其中的内存区域可以动态(时机和大小都不确定)申请和释放
所以这一大块的物理内存的组织和管理方式通常有一下几种:
1)双向链表
2)位图
3)对象池

因为这块内存使用的动态性,所以相对栈来说,其性能稍差
Glibc是GNU发布的libc库,即C运行库,即C语言在运行时所依赖的运行环境,在C程序(main函数)运行前就已经加载到内存中

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。