大 内存如果从heap中分配,第一它如果释放了可能不会立即归还操作系统,第二它如果不释放,由于heap中小内存的分配和释放会造成很多碎片,再有大内存 分配需求时可能会失败,另外heap是要求很严格的一个虚拟内存区间,而且算法维护开销很大,最好让它和谐一些,就是说不要让内存分配的差别过于大,一会 很大的需求,一会一个字节的,由于用户程序内存需求的不确定性,它又不能像内核那样实现简单的页面对齐,最小分配粒度我说是半个字节都不为过,而最大可以 上G,即使是伙伴算法也不能高效的实现从而带来它在内核中的那种高效,因此linux对用户空间的内存分配实行了分级管理,具体怎样划分级别的策略留给最 终的程序员,linux的glibc库实现了以下的分级机制,通过若干个微调值控制用户进程内存分配的地点,分别为:
M_TRIM_THRESHOLD:当可以被释放的内存堆积到该值时进行正真的释放(sbrk)操作;
M_MMAP_THRESHOLD:如果需要分配的内存超过该值,glibc将采用mmap分配内存。
这 样的话,超过M_MMAP_THRESHOLD的内存分配都将采用mmap进行,如此的结果就是当用户调用free的时候,它将马上返还给操作系统,这些 内存就不会占据着可能根本就不会再使用的比如heap空间,那样地话可能还会导致heap过于大从而阻碍正常的别的mmap分配。通过这种分级分配机制, 用户只要设置好自己的策略,内存分配在底层看来就会和谐很多,不会过于严重的出现内存块大小相间的情况,也不会出现小内存乱释放导致碎片,最大的可用内存 无法满足大内存需求但是空闲内存之和却很大的情况。其实heap在linux中是个很松散的概念,之所以有heap这一说是历史原因,其初衷是为了管理动 态内存,那是在指针这种数据类型被展示给程序员之后的事了,然而如果我们有更好的内存管理方式特别是动态内存管理方式的话,那么为何还要死死拽住heap 这个概念呢?其实就算是内核也是一切为了用户,最初的内存和进程同时换入换出,然后又有了写时复制,就是说在fork子进程的时候,完全和父进程共享内存 区域,然后直到二者之一有写操作的时候才将写的页面分离,其实这个写时复制机制只不过是动态请页机制的一个策略,另一个策略就是物理内存并不映射到进程地 址空间,直到第一次访问的时候再做,而且每次只映射一个页面,和谐的是,这二者同时在缺页处理中实现,其实这种懒惰的方式是有道理的,其根本就是为了向每 个进程可以最大化的使用内存,想达到这个目的每个进程就必须做相反的事,也就是用最懒惰的方式使用内存,向最小化使用内存的方向收敛,这看似是矛盾的,然 而这就是自组织,我们保护环境是为了利用环境,比如可以让更多的人开上车(如果环境被破坏就没有办法再开车了),使生活更舒适,然后为了达到这个目标就必 须尽量少开车,这就是和谐。需要节省资源的需要采用懒惰机制的是个体,最大化收益的是整体,带来的结果就是公平,就是和谐。
分享到:
相关推荐
在线英语阅读分级项目代码在线英语阅读分级系统-在线英语阅读分级系统源码-在线英语阅读分级管理系统-在线英语阅读分级管理系统java代码-在线英语阅读分级平台-在线英语阅读分级平台代码-在线英语阅读分级代码 ...
课程设计-基于MATLAB的水果分级系统(含源码、数据、文档说明).zip已获导师指导并通过的97分的高分大作业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 课程设计-基于MATLAB的...
SVN分级授权工具部署手册--Windows用户认证--Visual-SVN-权限 SVN分级授权工具部署手册--Windows用户认证--Visual-SVN-权限
1 范围 本指导性技术文件为信息安全事件的分类分级提供指导,用于信息安全事件的防范与处置,为事前准备、事中应对、事后处理提供一个基础指南,可供信息系统和基础信息传输网络的运营和使用单位以及信息安全主管...
AGMA 2015-1-A01精度分级系统.pdf
该课题为基于MATLAB的水果分级系统。适用圆形水果,如苹果,橘子,柚子,柿子等,统计水果图片的面积,圆形度和色泽等多参数进行评价。该设计带一个GUI界面,通过设置直径和色泽,测试水果的这些参数,从而得出该...
一个分配和分级Jupyter notebook的系统
事故管理制度-事故的分类和分级精选.doc
提出了一种基于用户和分级QoS的动态带宽分配控制算法(Dynamic Bandwidth Allocation based on User and Multi-level QoS),该算法根据网络出口带宽的使用状态,以及用户的QoS等级动态地调整用户带宽。实验结果表明...
RTX分级管理插件-破解文件分享。 请用于学习,勿用户商业用途。
Linux系统是一个免费使用和自由传播的类Unix操作系统,基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统,Linux是许多企业...
梁铭会-电子病历系统功能分级评估.pptx
通过分析安全局域网系统文件动态分级管理技术机制以及系统基于动态监控交换机的终端行为监控结构, 提出了一种基于安全局域网分级文件分发系统的设计与实现方案。该系统解决了原有安全局域网系统监控结构的网络化扩展...
音视频-编解码-面向P2P的可信分级匿名通信系统的研究和实现.pdf
00879 营销培训--一线销售人员应该分级培训.doc
网络游戏-无线物联家居系统分级网络架构及其组网通信方法.zip
行业文档-设计装置-分解分级高桩承台的施工方法.zip
行业分类-设备装置-带清污功能的分级制动式陶瓷基刹车片系统.zip
v1.0-周赛23年-分级测试.exe
go-log - Log 库支持日志分级和多处理器