一种缓解碎片产生的内存管理方法.pdf

上传人:54 文档编号:624672 上传时间:2018-02-26 格式:PDF 页数:6 大小:491.04KB
返回 下载 相关 举报
摘要
申请专利号:

CN201410134861.9

申请日:

2014.04.04

公开号:

CN104063328A

公开日:

2014.09.24

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效 IPC(主分类):G06F 12/02申请日:20140404|||公开

IPC分类号:

G06F12/02

主分类号:

G06F12/02

申请人:

浪潮电子信息产业股份有限公司

发明人:

周博; 孟宪伟; 王旭

地址:

250014 山东省济南市高新区舜雅路1036号

优先权:

专利代理机构:

代理人:

PDF下载: PDF下载
内容摘要

本发明提供一种缓解碎片产生的内存管理方法,属于计算机领域,本发明包括两部分,一是缓存管理模块用于处理重复申请释放,二是内存池管理用于实际的内存分配与回收,采用内存重复使用缓存管理加内存池管理相结合的方法来进行内存管理,加快内存分配速度,提高内存分配效率,实现高效、快速内存分配,及抑制内存碎片产生。

权利要求书

1.  一种缓解碎片产生的内存管理方法,其特征在于包括两部分,一是缓存管理模块用于处理重复申请释放,二是内存池管理用于实际的内存分配与回收,其包括已使用池空间管理和未使用池空间管理两部分;
该方法组成:
(1)查找未使用缓存链表,若找到匹配大小的链表,则将地址返回给用户;
(2)在未使用缓存链表中,没有找到匹配大小的链表,则向内存池请求内存空间,并将内存地址加入到已使用缓存链表,并将地址返回给用户;
(3)向内存池请求空间,若有足够的空间,则将未使用池空间存入已使用池空间,并将内存页首地址返回给缓存管理模块;
(4)向内存池请求空间,若没有足够的空间,则先回收未使用缓存链表中的最久未使用空间,将缓存链表中的内存加入到内存池中的未使用池空间链表中;然后再从未使用池空间链表重新分配给内存给缓存管理模块。

说明书

一种缓解碎片产生的内存管理方法
技术领域
本发明涉及计算机领域,具体地说是一种缓解碎片产生的内存管理方法。
背景技术
内存管理要高效、快速的分配,并且能有效地抑制碎片的产生。内存碎片分为内部碎片和外部碎片。因为所有的内存分配必须起始于可被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所示:
初始化申请流程,在初始化该模块时,一次从系统申请的足够大的内存空间。
逆初始化释放流程,在逆初始化该模块时,将初始化时从系统一次申请的内存空间换回系统。
分配流程,从内存池中分配4k对齐的空间,将该空间加入到已使用链表。
回收流程,当无法从内存池中分配足够空间时,先启动回收流程,将缓存中最久未使用的空间回收到内存池的未使用链表中。

一种缓解碎片产生的内存管理方法.pdf_第1页
第1页 / 共6页
一种缓解碎片产生的内存管理方法.pdf_第2页
第2页 / 共6页
一种缓解碎片产生的内存管理方法.pdf_第3页
第3页 / 共6页
点击查看更多>>
资源描述

《一种缓解碎片产生的内存管理方法.pdf》由会员分享,可在线阅读,更多相关《一种缓解碎片产生的内存管理方法.pdf(6页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN104063328A43申请公布日20140924CN104063328A21申请号201410134861922申请日20140404G06F12/0220060171申请人浪潮电子信息产业股份有限公司地址250014山东省济南市高新区舜雅路1036号72发明人周博孟宪伟王旭54发明名称一种缓解碎片产生的内存管理方法57摘要本发明提供一种缓解碎片产生的内存管理方法,属于计算机领域,本发明包括两部分,一是缓存管理模块用于处理重复申请释放,二是内存池管理用于实际的内存分配与回收,采用内存重复使用缓存管理加内存池管理相结合的方法来进行内存管理,加快内存分配速度,提高内存分配效率,。

2、实现高效、快速内存分配,及抑制内存碎片产生。51INTCL权利要求书1页说明书2页附图2页19中华人民共和国国家知识产权局12发明专利申请权利要求书1页说明书2页附图2页10申请公布号CN104063328ACN104063328A1/1页21一种缓解碎片产生的内存管理方法,其特征在于包括两部分,一是缓存管理模块用于处理重复申请释放,二是内存池管理用于实际的内存分配与回收,其包括已使用池空间管理和未使用池空间管理两部分;该方法组成(1)查找未使用缓存链表,若找到匹配大小的链表,则将地址返回给用户;(2)在未使用缓存链表中,没有找到匹配大小的链表,则向内存池请求内存空间,并将内存地址加入到已使用。

3、缓存链表,并将地址返回给用户;(3)向内存池请求空间,若有足够的空间,则将未使用池空间存入已使用池空间,并将内存页首地址返回给缓存管理模块;(4)向内存池请求空间,若没有足够的空间,则先回收未使用缓存链表中的最久未使用空间,将缓存链表中的内存加入到内存池中的未使用池空间链表中;然后再从未使用池空间链表重新分配给内存给缓存管理模块。权利要求书CN104063328A1/2页3一种缓解碎片产生的内存管理方法0001技术领域本发明涉及计算机领域,具体地说是一种缓解碎片产生的内存管理方法。背景技术0002内存管理要高效、快速的分配,并且能有效地抑制碎片的产生。内存碎片分为内部碎片和外部碎片。因为所有的。

4、内存分配必须起始于可被4、8或16整除(视处理器体系结构而定)的地址或者因为MMU的分页机制的限制,决定内存分配算法仅能把预定大小的内存块分配给客户。假设当某个客户请求一个43字节的内存块时,因为没有适合大小的内存,所以它可能会获得44字节、48字节等稍大一点的字节,因此由所需大小四舍五入而产生的多余空间就叫内部碎片;频繁的分配与回收物理页面会导致大量的、连续且小的页面块夹杂在已分配的页面中间,就会产生外部碎片。假设有一块一共有100个单位的连续空闲内存空间,范围是099。如果你从中申请一块内存,如10个单位,那么申请出来的内存块就为09区间。这时候你继续申请一块内存,比如说5个单位大,第二块。

5、得到的内存块就应该为1014区间。如果你把第一块内存块释放,然后再申请一块大于10个单位的内存块,比如说20个单位。因为刚被释放的内存块不能满足新的请求,所以只能从15开始分配出20个单位的内存块。现在整个内存空间的状态是09空闲,1014被占用,1524被占用,2599空闲。其中09就是一个内存碎片了。如果1014一直被占用,而以后申请的空间都大于10个单位,那么09就永远用不上了,变成外部碎片。发明内容0003本发明使用一种缓解碎片产生的内存管理方法,实现内存高效、快速分配,并抑制内存碎片产生。使用本方法可以大大提高内存分配效率,减少内存碎片的产生。0004本发明解决其技术问题所采用的技术。

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

7、里。最后再从内存池中重新划分空间。0005实现缓解碎片产生的内存管理方法组成1查找未使用缓存链表,若找到匹配大小的链表,则将地址返回给用户。00062在未使用缓存链表中,没有找到匹配大小的链表,则向内存池请求内存空间。并将内存地址加入到已使用缓存链表,并将地址返回给用户。说明书CN104063328A2/2页400073向内存池请求空间,若有足够的空间,则将未使用池空间存入已使用池空间,并将内存页首地址返回给缓存管理模块。00084向内存池请求空间,若没有足够的空间,则先回收未使用缓存链表中的最久未使用空间,将缓存链表中的内存加入到内存池中的未使用池空间链表中。然后再从未使用池空间链表重新分配。

8、给内存给缓存管理模块。0009本发明与现有技术相比,所产生的有益效果是通过引入本内存管理方法,会减少因频繁申请释放内存产生的碎片,在申请、释放过程中提高分配、回收的效率。由于本方法具有内存回收机制,能有效避免因内存泄漏导致的资源耗尽现象。附图说明0010附图1是本发明的模块结构图;附图2是组织形式组成的单链表图;附图3是组织形式组成的两个双向链表图。具体实施方式0011本发明使用一种缓解碎片产生的内存管理方法,该发明主要包括1内存重复使用缓存管理组织形式,内存按4K对齐后的大小进行分类,并组成单链表。如图2所示申请流程,将申请的内存大小进行4K对齐后,在本缓存中查找未使用的内存,看是否有匹配的。

9、,若存在匹配的节点,则返回相应的内存地址,若没有匹配的节点,则像内存池申请空闲内存。0012释放流程,将释放的内存按其大小插入到相应的单链表中(头插法)。00131内存池管理组织形式,将从系统中申请出来的一整块连续空间分割成若干个4K大小的内存块。组成两个双向链表,一个是已使用内存链表,一个是未使用内存链表。反应出空间的连续程度。如图3所示初始化申请流程,在初始化该模块时,一次从系统申请的足够大的内存空间。0014逆初始化释放流程,在逆初始化该模块时,将初始化时从系统一次申请的内存空间换回系统。0015分配流程,从内存池中分配4K对齐的空间,将该空间加入到已使用链表。0016回收流程,当无法从内存池中分配足够空间时,先启动回收流程,将缓存中最久未使用的空间回收到内存池的未使用链表中。说明书CN104063328A1/2页5图1图2说明书附图CN104063328A2/2页6图3说明书附图CN104063328A。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1