内存池介绍

内存池 : http://blog.csdn.net/rabbit729/article/details/3927979

内存碎片介绍 : http://blog.csdn.net/bit_x/article/details/5655278

 

内存碎片:

“碎片的内存”描述一个系统中所有不可用的空闲内存。是因为在分配一个内存块后,使之空闲,但不将空闲内存归还给最大内存块而产生的

 

 

产生碎片的原因 :

①内部碎片 : 由于内存分配必须其实于可被4.8.16整除的地址(根据处理器体系结构而定)当用户申请了比如大小为43的空间时就会产生一点碎片

②外部碎片 : 如果用户申请了三块内存,接着释放了中间的内存,然后申请内存的时候可能会从中间那块地址申请,但是大小肯定不会和之前那块一样大,

        就会产生不可被分配的碎片

内存碎片率为 当前系统可分配的最大内存与空闲内存的比值

 

几种常见的解决方法 : 

①最先适合分配算法 : 四个指针,begin,end,break,free,分配内存break不断指向最后已用内存的末端,free建立空闲内存链表.每次分配内存的时候从链表中

          查找,找到第一个比要求大的空闲内存.

②最佳适合分配   : 和上面差不多,只是在查找时要找到最接近大小的空闲内存

③最差适合分配   : 当分配一个内存块时,系统在整个自由表中搜索与请求存储量不匹配的内存块

④固定存储量分配  : 申请大片内存,然后分为固定大小的几节然后自己管理申请分配

 

posted @ 2015-12-10 16:30  chencesc  阅读(181)  评论(0编辑  收藏  举报