首页 | 联系我们 | 网站地图
培训课程介绍
培训业渴求六类人才
IT培训领域的北大青鸟今年已多次在某知名招聘网站上发布招聘广告。北大..
微软Office发展成协同平台
微软开发出了专门针对中国本地需求的基于Office System的解..
Windows2000的安装问题集锦
..Unattend.txt是保存在W2K安装盘下的I386目录下的..
一个IT女生,实习一周被踢回家[转]
我本科就读于一个算是品牌的高校,学得是管理,后来阴差阳错,也因了我对..
+ [ 软件培训 ]
LINUX培训
·行业网站图形设计的一点..
对设计来说行业网站和企业网站的设计截然不同,对整个网站的创意、风格、整体框架布局、文字编排、图片的合理利用等有着诸多的要求..
·培训业渴求六类人才
·页面制作-不能忽视
·Java手机游戏编程之..
·谈谈构图法则
·行业网站图形设计的一点..
挖掘Linux操作系统中堆内存释放的奥秘

今天上午得到了一些高手指点,终于弄懂了堆内存释放的奥秘,特总结出来与大家分享!

Linux用户进程是如何释放内存的

进程的堆,并不是直接建立在Linux的内核的内存分配策略上的,而是建立在glibc的堆管理策略上的(也就是glibc的动态内存分配策略上),堆的管理是由glibc进行的。所以我们调用free对malloc得到的内存进行释放的时候,并不是直接释放给操作系统,而是还给了glibc的堆管理实体,而glibc会在把实际的物理内存归还给系统的策略上做一些优化,以便优化用户任务的动态内存分配过程。

那么glibc的堆管理器在什么时候才把物理内存归还给系统呢?

它会从堆的最大线性地址开始,从后向前计算用户任务当前有多少空闲的堆内存(直到碰到使用中的堆内存地址为止),它会认为有2048k的可释放内存,只有在该值大于某个特定的threshhold时(2.3.6上为64k),它才会把这些内存归还给系统。而在中间的“未使用”内存是不会归还给系统的,所以系统也不可能再利用这块物理内存页(我们假设系统没有swap区和swap文件),也就是说系统的内存会为此减少,除非在它之前的堆内存都用free进行释放以后,glibc的堆管理器才有可能(只是有可能)把该段内存归还给系统。

由此,我们在使用malloc/free时应该小心,特别是在初始化时分配了好多内存,但是在这之后却再也不需要这么多的内存了,而这块内存又没有达到threshhold值或者在堆的最高线性地址处有某块内存没有释放,但是它前面的所有堆内存都释放了;这种情况下,用户任务将会浪费一些物理内存,这在资源比较紧张的嵌入式系统中是不可容忍的。

·JAVA培训注重趣味引导..
·软件测试工程师培训成新宠
·NTC落户长沙
·CCNA培训简介
·当前Java软件开发中几..
越来越多人开始使用Java,但是他们大多数人没有做好足够的思想准备(没有接受OO思想体系相关培训),以致不能很好驾驭Java项目..
计算机培训
管理使用座谈及培训会议..
[4 -9]第二期“农远工程”32个项目县工程负责同志参加会议并就“校校通”、“农远”工程的管理使用问题进行了汇报交流活动


·CIO如何应对失效管理
·风投的中国清洁技术之梦
图形设计
东北电力设计院
[30 -8]东北院技术装备精良。现已建成主干千兆、桌面百兆的局域网,并实现了网上异地办公设计


·光是电灯泡就要学上好些..
·传递视觉信息
友情链接:英文 | 网站建设 | 女性 | 体育 | 暖气片 | 干手机 | 新闻 | 汽车美容 | 法律 | 物流 | 国内旅游 | 地暖
网站建设:上海傲网电子科技有限公司
首页 | 联系我们 | 网站地图 | 计算机培训 | IT培训 | 网页设计 | 软件培训 | 图形设计