内存池 : 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建立空闲内存链表.每次分配内存的时候从链表中
查找,找到第一个比要求大的空闲内存.
②最佳适合分配 : 和上面差不多,只是在查找时要找到最接近大小的空闲内存
③最差适合分配 : 当分配一个内存块时,系统在整个自由表中搜索与请求存储量不匹配的内存块
④固定存储量分配 : 申请大片内存,然后分为固定大小的几节然后自己管理申请分配