[发明专利]一种内存池的管理方法和装置有效
申请号: | 201210460482.X | 申请日: | 2012-11-15 |
公开(公告)号: | CN103810115B | 公开(公告)日: | 2017-10-13 |
发明(设计)人: | 黄明生 | 申请(专利权)人: | 深圳市腾讯计算机系统有限公司 |
主分类号: | G06F12/06 | 分类号: | G06F12/06 |
代理公司: | 北京三高永信知识产权代理有限责任公司11138 | 代理人: | 江崇玉 |
地址: | 518000 广东省深圳市南*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 内存 管理 方法 装置 | ||
技术领域
本发明涉及通信领域,特别涉及一种内存池的管理方法和装置。
背景技术
内存池是为了解决直接申请分配内存导致所申请内存块大小不定以及当频繁使用内存时造成大量内存碎片的问题而采用的一种内存分配方式。内存池在使用内存之前,先申请分配一定数量的、一般大小相等的内存块留作备用;当有新的内存需求时,就从内存池中分出一部分内存块使用,若内存块不够再继续申请新的内存,从而尽量避免内存碎片,使得内存分配效率得到提升。
目前,当内存池的用户请求内存时,则根据用户请求的内存大小从内存池中取出一个空闲内存块给用户使用,用户根据返回的内存块在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链表头部的最前端。
具体地,所述装置还包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市腾讯计算机系统有限公司,未经深圳市腾讯计算机系统有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210460482.X/2.html,转载请声明来源钻瓜专利网。