一种内存池的管理方法和装置制造方法及图纸

技术编号:10075426 阅读:98 留言:0更新日期:2014-05-24 04:52
本发明专利技术公开了一种内存池的管理方法和装置,属于通信领域。方法包括:当接收到用户的内存请求时,获取内存池中预先添加的最近最少使用LRU链表头部预设个数的内存块;在所述LRU链表头部预设个数的内存块中查找空闲内存块,将查找到的空闲内存块返回给所述用户使用;当所述内存池中的空闲内存超过预设的阈值时,从所述LRU链表尾部开始向系统释放空闲内存块,直到所述内存池中的空闲内存块不大于所述阈值。本发明专利技术解决了目前用户请求内存时每次需要在TLB中建立地址映射以及向系统释放内存时从较大的内存块开始淘汰而不管这些内存块是否经常被使用的问题,提高了CPU的访问速度和内存分配效率,降低了内存池发生抖动现象的概率。

【技术实现步骤摘要】

本专利技术涉及通信领域,特别涉及一种内存池的管理方法和装置
技术介绍
内存池是为了解决直接申请分配内存导致所申请内存块大小不定以及当频繁使用内存时造成大量内存碎片的问题而采用的一种内存分配方式。内存池在使用内存之前,先申请分配一定数量的、一般大小相等的内存块留作备用;当有新的内存需求时,就从内存池中分出一部分内存块使用,若内存块不够再继续申请新的内存,从而尽量避免内存碎片,使得内存分配效率得到提升。目前,当内存池的用户请求内存时,则根据用户请求的内存大小从内存池中取出一个空闲内存块给用户使用,用户根据返回的内存块在TLB(Translation Lookaside Buffer,旁路转换缓冲)中建立地址映射,以便CPU(Central Processing Unit,中央处理器)访问;如果内存池中没有空闲内存块,则向系统申请一块新内存块给用户使用;当内存池中空闲内存过大时,则向系统释放内存池中的空闲内存块,一般是从较大的内存块开始淘汰。在实现本专利技术的过程中,专利技术人发现现有技术至少存在以下问题:用户请求内存时,直接从内存池中取空闲内存块,每次需要在TLB中建立地址映射,降低了CPU的访问速度;而向系统释放内存时,一般是从较大的内存块开始淘汰,而不管这些内存块是否经常被使用,导致内存块刚被释放回系统又要从系统中重新申请回来的内存池抖动现象,降低了内存池中的内存分配效率。
技术实现思路
了解决现有技术的问题,本专利技术实施例提供了一种内存池的管理方法和装置。所述技术方案如下:一方面,提供了一种内存池的管理方法,所述方法包括:当接收到用户的内存请求时,获取内存池中预先添加的最近最少使用LRU链表头部预设个数的内存块;在所述LRU链表头部预设个数的内存块中查找空闲内存块,将查找到的空闲内存块返回给所述用户使用;当所述内存池中的空闲内存超过预设的阈值时,从所述LRU链表尾部开始向系统释放空闲内存块,直到所述内存池中的空闲内存块不大于所述阈值。具体地,所述接收到用户的内存请求之前,包括:在所述内存池中添加LRU链表,所述LRU链表中依照使用时间由后向前的顺序记录所述内存池中所有内存块的使用时间。具体地,所述将查找到的空闲内存块返回给所述用户使用之后,包括:修改所述LRU链表,将所述返回的空闲内存块置于所述LRU链表头部的最前端。具体地,所述在所述LRU链表头部预设个数的内存块中查找空闲内存块,还包括:如果在所述LRU链表头部预设个数的内存块中没有查找到空闲内存块,则从所述内存池中调取空闲内存块返回给所述用户使用,并将所述返回的空闲内存块置于所述LRU链表头部的最前端;如果所述内存池中没有空闲内存块,则向系统申请新内存块返回给所述用户使用,将所述申请的新内存块置于所述LRU链表头部的最前端。具体地,所述在所述LRU链表头部预设个数的内存块中查找空闲内存块,将查找到的空闲内存块返回给所述用户使用,包括:如果在所述LRU链表头部预设个数的内存块中查找到多个空闲内存块,将查找到的空闲内存块中置于所述LRU链表头部最前端的空闲内存块返回给所述用户使用。另一方面,提供了一种内存池的管理装置,所述装置包括:获取模块,用于当接收到用户的内存请求时,获取内存池中预先添加的LRU链表头部预设个数的内存块;查找模块,用于在所述LRU链表头部预设个数的内存块中查找空闲内存块,将查找到的空闲内存块返回给所述用户使用;释放模块,用于当所述内存池中的空闲内存超过预设的阈值时,从所述LRU链表尾部开始向系统释放空闲内存块,直到所述内存池中的空闲内存块不大于所述阈值。具体地,所述装置包括:添加模块,用于所述获取模块接收到用户的内存请求之前,在所述内存池中添加LRU链表,所述LRU链表中依照使用时间由后向前的顺序记录所述内存池中所有内存块的使用时间。具体地,所述装置包括:修改模块,用于所述查找模块将查找到的空闲内存块返回给所述用户使用之后,修改所述LRU链表,将所述返回的空闲内存块置于所述LRU链表头部的最前端。具体地,所述装置还包括:调取模块,用于如果所述查找模块在所述LRU链表头部预设个数的内存块中没有查找到空闲内存块,则从所述内存池中调取空闲内存块返回给所述用户使用,并将所述返回的空闲内存块置于所述LRU链表头部的最前端;如果所述内存池中没有空闲内存块,则向系统申请新内存块返回给所述用户使用,将所述申请的新内存块置于所述LRU链表头部的最前端。具体地,所述查找模块,用于如果在所述LRU链表头部预设个数的内存块中查找到多个空闲内存块,将查找到的空闲内存块中置于所述LRU链表头部最前端的空闲内存块返回给所述用户使用。本专利技术实施例提供的技术方案带来的有益效果是:通过接收到用户的内存请求时,获取内存池中预先添加的LRU链表头部预设个数的内存块,将在这些内存块中查找到的空闲内存块返回给用户使用;当内存池中的空闲内存超过预设的阈值时,从LRU链表尾部开始向系统释放空闲内存块,解决了目前用户在内存池中请求内存时每次需要在TLB中建立地址映射以及向系统释放内存时从较大的内存块开始淘汰而不管这些内存块是否经常被使用的问题,提高了CPU的访问速度和内存分配效率,降低了内存池发生抖动现象的概率。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本专利技术实施例一提供的内存池的管理方法流程图;图2是本专利技术实施例二提供的内存池的管理方法流程图;图3是本专利技术实施例三提供的内存池的管理装置第一种结构示意图;图4是本专利技术实施例三提供的内存池的管理装置第二种结构示意图;图5是本专利技术实施例三提供的内存池的管理装置第三种结构示意图;图6是本专利技术实施例三提供的内存池的管理装置第四种结构示意图;图7是本专利技术实施例三提供的内存池的管理装置第五种结构示意图;图8是本专利技术实施例三提供的内存池的管理装置第六种结构示意图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚,下面将结合附图对本专利技术实施方式作进一步地详细描述。实施例一参见图1,本专利技术实施例提供了一种内存池的管理方法,该方法包括:101、当本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种内存池的管理方法,其特征在于,所述方法包括:
当接收到用户的内存请求时,获取内存池中预先添加的最近最少使用LRU
链表头部预设个数的内存块;
在所述LRU链表头部预设个数的内存块中查找空闲内存块,将查找到的空
闲内存块返回给所述用户使用;
当所述内存池中的空闲内存超过预设的阈值时,从所述LRU链表尾部开始
向系统释放空闲内存块,直到所述内存池中的空闲内存块不大于所述阈值。
2.根据权利要求1所述的方法,其特征在于,所述接收到用户的内存请求
之前,包括:
在所述内存池中添加LRU链表,所述LRU链表中依照使用时间由后向前
的顺序记录所述内存池中所有内存块的使用时间。
3.根据权利要求1所述的方法,其特征在于,所述将查找到的空闲内存块
返回给所述用户使用之后,包括:
修改所述LRU链表,将所述返回的空闲内存块置于所述LRU链表头部的
最前端。
4.根据权利要求1所述的方法,其特征在于,所述在所述LRU链表头部
预设个数的内存块中查找空闲内存块,还包括:
如果在所述LRU链表头部预设个数的内存块中没有查找到空闲内存块,则
从所述内存池中调取空闲内存块返回给所述用户使用,并将所述返回的空闲内
存块置于所述LRU链表头部的最前端;
如果所述内存池中没有空闲内存块,则向系统申请新内存块返回给所述用
户使用,将所述申请的新内存块置于所述LRU链表头部的最前端。
5.根据权利要求1所述的方法,其特征在于,所述在所述LRU链表头部
预设个数的内存块中查找空闲内存块,将查找到的空闲内存块返回给所述用户

\t使用,包括:
如果在所述LRU链表头部预设个数的内存块中查找到多个空闲内存块,将
查找到的空闲内存块中置于所述LRU链表头部最前端的空闲内存块返回给所述<...

【专利技术属性】
技术研发人员:黄明生
申请(专利权)人:深圳市腾讯计算机系统有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1