[发明专利]一种缓解碎片产生的内存管理方法在审

专利信息
申请号: 201410134861.9 申请日: 2014-04-04
公开(公告)号: CN104063328A 公开(公告)日: 2014-09-24
发明(设计)人: 周博;孟宪伟;王旭 申请(专利权)人: 浪潮电子信息产业股份有限公司
主分类号: G06F12/02 分类号: G06F12/02
代理公司: 暂无信息 代理人: 暂无信息
地址: 250014 山东*** 国省代码: 山东;37
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 缓解 碎片 产生 内存 管理 方法
【说明书】:

技术领域

发明涉及计算机领域,具体地说是一种缓解碎片产生的内存管理方法。

背景技术

内存管理要高效、快速的分配,并且能有效地抑制碎片的产生。内存碎片分为内部碎片和外部碎片。因为所有的内存分配必须起始于可被4、8或16整除(视处理器体系结构而定)的地址或者因为MMU的分页机制的限制,决定内存分配算法仅能把预定大小的内存块分配给客户。假设当某个客户请求一个43字节的内存块时,因为没有适合大小的内存,所以它可能会获得44字节、48字节等稍大一点的字节,因此由所需大小四舍五入而产生的多余空间就叫内部碎片;频繁的分配与回收物理页面会导致大量的、连续且小的页面块夹杂在已分配的页面中间,就会产生外部碎片。假设有一块一共有100个单位的 连续空闲内存空间,范围是0~99。如果你从中申请一块内存,如10个单位,那么申请出来的内存块就为0~9区间。这时候你继续申请一块内存,比如说5个单位大,第二块得到的内存块就应该为10~14区间。如果你把第一块内存块释放,然后再申请一块大于10个单位的内存块,比如说20个单位。因为刚被释放的内存块不能满足新的请求,所以只能从15开始分配出20个单位的内存块。现在整个内存空间的状态是0~9空闲,10~14被占用,15~24被占用,25~99空闲。其中0~9就是一个内存碎片了。如果10~14一直被占用,而以后申请的空间都大于10个单位,那么0~9就永远用不上了,变成外部碎片。

发明内容

本发明使用一种缓解碎片产生的内存管理方法,实现内存高效、快速分配,并抑制内存碎片产生。使用本方法可以大大提高内存分配效率,减少内存碎片的产生。

本发明解决其技术问题所采用的技术方案是:

该内存管理方法包括两部分,一是缓存管理模块用于处理重复申请释放,二是内存池管理用于实际的内存分配与回收,其包括已使用池空间管理和未使用池空间管理两部分。用户向该内存管理方法申请内存,先将用户输入的申请内存大小进行4k对齐计算出申请对齐内存大小,根据对齐内存大小在缓存模块中查找与之相匹配大小的未使用缓存链表,若找到匹配大小的链表,则将缓存链表中的缓存项返回给用户;若未找到匹配大小的链表,则向内存池申请内存,将内存池返回的地址加入到已使用缓存链表中,并返回给用户。在向内存池申请内存过程,若发现内存池中未使用池空间已耗尽,则先回收缓存模块中未使用的缓存项,然后将回收内存页加入到未使用池空间链表里。最后再从内存池中重新划分空间。

实现缓解碎片产生的内存管理方法组成:

(1) 查找未使用缓存链表,若找到匹配大小的链表,则将地址返回给用户。

(2) 在未使用缓存链表中,没有找到匹配大小的链表,则向内存池请求内存空间。并将内存地址加入到已使用缓存链表,并将地址返回给用户。

(3) 向内存池请求空间,若有足够的空间,则将未使用池空间存入已使用池空间,并将内存页首地址返回给缓存管理模块。

(4) 向内存池请求空间,若没有足够的空间,则先回收未使用缓存链表中的最久未使用空间,将缓存链表中的内存加入到内存池中的未使用池空间链表中。然后再从未使用池空间链表重新分配给内存给缓存管理模块。

本发明与现有技术相比,所产生的有益效果是:

通过引入本内存管理方法,会减少因频繁申请释放内存产生的碎片,在申请、释放过程中提高分配、回收的效率。由于本方法具有内存回收机制,能有效避免因内存泄漏导致的资源耗尽现象。

附图说明

附图1是本发明的模块结构图;

附图2是组织形式组成的单链表图;

附图3是组织形式组成的两个双向链表图。

具体实施方式

本发明使用一种缓解碎片产生的内存管理方法,该发明主要包括:

(1) 内存重复使用缓存管理

组织形式,内存按4k对齐后的大小进行分类,并组成单链表。如图2所示:

申请流程,将申请的内存大小进行4k对齐后,在本缓存中查找未使用的内存,看是否有匹配的,若存在匹配的节点,则返回相应的内存地址,若没有匹配的节点,则像内存池申请空闲内存。

释放流程,将释放的内存按其大小插入到相应的单链表中(头插法)。

(1) 内存池管理

组织形式,将从系统中申请出来的一整块连续空间分割成若干个4k大小的内存块。组成两个双向链表,一个是已使用内存链表,一个是未使用内存链表。反应出空间的连续程度。如图3所示:

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浪潮电子信息产业股份有限公司,未经浪潮电子信息产业股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201410134861.9/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top