[发明专利]一种内存池的内存块调用方法和释放方法及服务器在审
申请号: | 201611146281.7 | 申请日: | 2016-12-13 |
公开(公告)号: | CN106598736A | 公开(公告)日: | 2017-04-26 |
发明(设计)人: | 蒋晓岗;张明宇 | 申请(专利权)人: | 深圳中科讯联科技股份有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50 |
代理公司: | 深圳市爱迪森知识产权代理事务所(普通合伙)44341 | 代理人: | 何婷 |
地址: | 518067 广东省深圳市*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 内存 调用 方法 释放 服务器 | ||
技术领域
本发明实施方式涉及计算机应用领域,特别是涉及一种内存池的内存块调用方法和内存块释放方法及服务器。
背景技术
在计算机软件开发和应用过程中,经常会用到动态申请内存与释放内存,当频繁使用软件时会造成大量的内存碎片并进而降低内存分配效率。目前,内存池是一种特殊的内存管理方式,与常规的内存管理相比较,其特点是每次分配使用的内存块大小是相同的,这种内存管理方式具有分配效率高,不会产生内存碎片的优点,常常应用在对内存分配效率要求较高,申请内存的大小固定的场合。其最主要的目的是如何高效,快速的分配,并且在适当的时候释放和回收内存资源。
现有的内存池管理方法通常采用链表的管理方式,将内存块的地址保存到一个链表里面,应用程序申请内存时从链表中查找可用内存块的地址,然后调用对应的内存块。这种方法需要逐个查找链表,额外内存消耗较多,在处理链表结点连接时也还有改进空间。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:现有内存池管理方法,应用程序每次申请内存时需要查找整个链表,额外内存消耗多,内存分配效率低。
发明内容
为解决上述技术问题,减少额外内存消耗,提升内存分配效率,本发明实施方式采用的一个技术方案是:提供一种内存池内存申请方法,该方法包括:申请内存池中的内存块,所述内存池初始化时包括若干个大小相同的空闲内存块和一个循环队列,所述循环队列存储有若干个与内存块对应的内存块地址;从循环队列中取出最先被存入的内存块地址;以及根据所述取出的内存块地址,调用对应的内存块。
其中,所述从循环队列中取出最先被存入的内存块地址步骤之前,进一步包括:判断循环队列中的内存块地址是否为空;若是,返回空指针。
其中,所述内存池中的内存块数量与循环队列中包含的内存块地址数量相同。
其中,所述内存池初始化时循环队列中的若干个内存块地址为连续的内存块地址。
为解决上述技术问题,减少额外内存消耗,提升内存分配效率,本发明实施方式采用的另一个技术方案是:提供一种内存池内存释放方法,包括:释放内存池的内存块,所述内存池初始化时包括若干个大小相同的空闲内存块和一个循环队列,所述循环队列存储有若干个与内存块对应的内存块地址;以及将释放内存块对应的内存块地址放入所述循环队列的尾部。
其中,所述内存池中的内存块数量与循环队列中包含的内存块地址数量相同。
其中,所述内存池初始化时循环队列中的若干个内存块地址为连续的内存块地址。
为解决上述技术问题,减少额外内存消耗,提升内存分配效率,本发明实施方式采用的另一个技术方案是:提供一种服务器,包括:应用程序运行单元和内存池,所述应用程序运行单元,用于向所述内存池发起申请内存块请求;所述内存池初始化时包括若干个大小相同的空闲内存块和一个循环队列,所述循环队列存储有若干个与内存块对应的内存块地址;所述内存池用于接收所述申请内存块请求,从循环队列中取出最先被存入的内存块地址;以及根据所述取出的内存块地址,调用对应的内存块。
其中,所述内存池中的内存块数量与循环队列中包含的内存块地址数量相同。
其中,所述内存池初始化时循环队列中的若干个内存块地址为连续的内存块地址。
本发明实施方式的有益效果是:内存池中的N个内存块,使用一个循环队列管理,申请内存块时,按照循环队列先入先出的原则,直接返回最先放入的内存块地址,调用对应的内存块,省去了现有技术查找链表的过程;此外,释放内存时,直接将内存块地址放入循环队列的尾部,无需判断队列是否已满,循环列队本身不需要消耗过多的性能。因此,可以明显减少额外的内存开销,提升内存分配效率。
附图说明
图1是本发明实施方式提供的一种内存池的组成结构示意图;
图2是本发明实施方式提供的一种内存池初始化方法的流程示意图;
图3是本发明实施方式提供的一种内存池的内存块调用方法的流程示意图;
图4是本发明实施方式提供的一种内存池的内存块释放方法的流程示意图;
图5是本发明实施方式提供的一种服务器的组成结构示意图。
具体实施方式
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳中科讯联科技股份有限公司,未经深圳中科讯联科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611146281.7/2.html,转载请声明来源钻瓜专利网。