内存管理基本概念之:碎片研究

来源:互联网 发布:外贸开发信软件 编辑:程序博客网 时间:2024/06/05 08:31

内存管理基本概念之:碎片研究

版权声明:
    本文章由vt.buxiu发布在www.vtzone.org,版权归vtzone研究小组所有,转载请保持此声明!!!

@内容摘要:碎片是内存管理必须面对的问题,在内存管理领域传统意义上的碎片分为两类,内部碎片(internal fragmentation)和外部碎片(external fragmentation)@:

内部碎片:
    由于内存分配器采取某些管理策略,当分配一块大于请求尺寸的内存块时发生,多余的部分被浪费。比如有些内存管理程序分配固定尺寸的内存块,当你请求128Bytes的内存时,运行库有可能返回一块256Bytes的内存给你,多分配的那部分内存是无法被使用的(因为请求者并不知道你返回了256BYTEs内存给他),因为是否分配固定大小的内存是内存分配器的事情,通常对于使用者对此一无所知,从内存分配器角度而言,多分配的那部分内存就是内部碎片。
  
外部碎片:
    当多次分配/释放请求之后,由于内存分配器分配策略导致有很多的小的内存块(形成很多小的空洞Hole),存在很多不连续的可用空闲内存块,但不能满足应用程序的内存分配请求(通常情况下是Hole太多,虽然总和足够大,但却不能够相应大内存块请求)。比如,当内存分配器管理的内存块有5128Bytes的内存块,但不连续,当面临256Bytes内存请求时却不能满足。
   
为了避免内部碎片,很多分配器将多余部分作为小的块保留下来,以便将来请求需要或进行合并,以满足大块请求。
    一些分配器碎片由于速度或简化限制分割的方式,另一些分配器为了避免外部碎片因为分割后可能将来不能合并成大块不能满足将来的请求。
碎片本质:
由上述所知,不管内部碎片还是外部碎片,碎片指不能被重用的内存。不能被重用的内存不仅和hole的数目与大小有关,也与程序将来的行为有关,和分配器的分配策略有关。
引起碎片的原因:
1.
不同时间释放导致(生命周期不同)
2.
程序请求内存的方式变化导致(大小变化,请求顺序)
相应的应对措施:
1.
预期内存块的释放时间
2.
分配时将在同一时间释放的内存块放在连续的内存空间,可以减少碎片。
预期程序请求的变化方式避免最坏情况的发生。


作者:vt.buxiu@vtzone.org  
 
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 一岁半小宝宝不爱吃饭怎么办 家养的小鸡打架怎么办 小鸡关在一起打架怎么办 小孩感冒出汗多怎么办 宝宝感冒出汗了怎么办 出汗多怎么办%3f 孩子睡觉出汗多怎么办 三年级孩子成绩下滑怎么办 幼儿数学不开窍怎么办 孩子一年级学习跟不上怎么办 孩子学习不认真怎么办 孩子平时不细心怎么办? 脖子出现黑圈怎么办 简历留白太多怎么办 excel数字外面加个圈怎么办 电脑输入法数字数不上怎么办 大班教案迷路了怎么办 迷路了怎么办活动反思 头突然眩晕是怎么办 孩子学习拖拉懒惰怎么办 头发晕想睡觉怎么办 五年级错别字多怎么办 入党志愿书写错字怎么办 高中不会写作文怎么办 考试不会写作文怎么办 高考不会写作文怎么办 孩子总是写错字怎么办 小孩总是写错字怎么办 孩子马虎不认真怎么办 小孩计算老出错怎么办 小学生计算总出错怎么办 高中考试总粗心怎么办 孩子考试总是粗心怎么办 一年级孩子考试粗心怎么办 老师说孩子粗心怎么办 计算题总出错怎么办 计算题总是出错怎么办 数学老是计算错误怎么办? 苗木抵扣计算错误怎么办 表格中计算错误怎么办 孩子电视瘾太大怎么办