[发明专利]一种内存池的管理方法和装置有效
申请号: | 201210460482.X | 申请日: | 2012-11-15 |
公开(公告)号: | CN103810115B | 公开(公告)日: | 2017-10-13 |
发明(设计)人: | 黄明生 | 申请(专利权)人: | 深圳市腾讯计算机系统有限公司 |
主分类号: | G06F12/06 | 分类号: | G06F12/06 |
代理公司: | 北京三高永信知识产权代理有限责任公司11138 | 代理人: | 江崇玉 |
地址: | 518000 广东省深圳市南*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 内存 管理 方法 装置 | ||
1.一种内存池的管理方法,其特征在于,所述方法包括:
当接收到用户的内存请求时,获取内存池中预先添加的最近最少使用LRU链表头部预设个数的内存块,所述LRU链表中依照使用时间由后向前的顺序记录所述内存池中所有内存块的使用时间;
在所述LRU链表头部预设个数的内存块中查找空闲内存块,将查找到的空闲内存块返回给所述用户使用;
当所述内存池中的空闲内存超过预设的阈值时,从所述LRU链表尾部开始向系统释放空闲内存块,直到所述内存池中的空闲内存块不大于所述阈值。
2.根据权利要求1所述的方法,其特征在于,所述接收到用户的内存请求之前,包括:
在所述内存池中添加LRU链表。
3.根据权利要求1所述的方法,其特征在于,所述将查找到的空闲内存块返回给所述用户使用之后,包括:
修改所述LRU链表,将返回的空闲内存块置于所述LRU链表头部的最前端。
4.根据权利要求1所述的方法,其特征在于,所述在所述LRU链表头部预设个数的内存块中查找空闲内存块,还包括:
如果在所述LRU链表头部预设个数的内存块中没有查找到空闲内存块,则从所述内存池中调取空闲内存块返回给所述用户使用,并将返回的空闲内存块置于所述LRU链表头部的最前端;
如果所述内存池中没有空闲内存块,则向系统申请新内存块返回给所述用户使用,将申请的新内存块置于所述LRU链表头部的最前端。
5.根据权利要求1所述的方法,其特征在于,所述在所述LRU链表头部预设个数的内存块中查找空闲内存块,将查找到的空闲内存块返回给所述用户使用,包括:
如果在所述LRU链表头部预设个数的内存块中查找到多个空闲内存块,将查找到的空闲内存块中置于所述LRU链表头部最前端的空闲内存块返回给所述用户使用。
6.一种内存池的管理装置,其特征在于,所述装置包括:
获取模块,用于当接收到用户的内存请求时,获取内存池中预先添加的LRU链表头部预设个数的内存块,所述LRU链表中依照使用时间由后向前的顺序记录所述内存池中所有内存块的使用时间;
查找模块,用于在所述LRU链表头部预设个数的内存块中查找空闲内存块,将查找到的空闲内存块返回给所述用户使用;
释放模块,用于当所述内存池中的空闲内存超过预设的阈值时,从所述LRU链表尾部开始向系统释放空闲内存块,直到所述内存池中的空闲内存块不大于所述阈值。
7.根据权利要求6所述的装置,其特征在于,所述装置包括:
添加模块,用于所述获取模块接收到用户的内存请求之前,在所述内存池中添加LRU链表。
8.根据权利要求6所述的装置,其特征在于,所述装置包括:
修改模块,用于所述查找模块将查找到的空闲内存块返回给所述用户使用之后,修改所述LRU链表,将返回的空闲内存块置于所述LRU链表头部的最前端。
9.根据权利要求6所述的装置,其特征在于,所述装置还包括:
调取模块,用于如果所述查找模块在所述LRU链表头部预设个数的内存块中没有查找到空闲内存块,则从所述内存池中调取空闲内存块返回给所述用户使用,并将返回的空闲内存块置于所述LRU链表头部的最前端;如果所述内存池中没有空闲内存块,则向系统申请新内存块返回给所述用户使用,将申请的新内存块置于所述LRU链表头部的最前端。
10.根据权利要求6所述的装置,其特征在于,所述查找模块,用于如果在所述LRU链表头部预设个数的内存块中查找到多个空闲内存块,将查找到的空闲内存块中置于所述LRU链表头部最前端的空闲内存块返回给所述用户使用。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市腾讯计算机系统有限公司,未经深圳市腾讯计算机系统有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210460482.X/1.html,转载请声明来源钻瓜专利网。