[发明专利]一种内存管理方法和装置无效
申请号: | 201310064521.9 | 申请日: | 2013-02-28 |
公开(公告)号: | CN103150257A | 公开(公告)日: | 2013-06-12 |
发明(设计)人: | 罗应龙;张新亮 | 申请(专利权)人: | 天脉聚源(北京)传媒科技有限公司 |
主分类号: | G06F12/02 | 分类号: | G06F12/02 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100007 北京市东城区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 内存 管理 方法 装置 | ||
技术领域
本发明涉及计算机领域,更具体地,涉及一种内存管理方法和装置。
背景技术
Linux操作系统采用物理内存和虚拟内存,物理内存是系统硬件提供的内存大小,是真正的内存,虚拟内存是为了满足物理内存的不足而提出的策略,它是利用磁盘空间虚拟出的一块逻辑内存,用作虚拟内存的磁盘空间被称为交换空间(Swap Space)。内核会将暂时不用的页面写到交换空间,这样使物理内存得到释放,这块内存就可以用于其它目的。
交换空间的页面在使用时会首先被交换到物理内存,如果此时没有足够的物理内存来容纳这些页面,它们又会被马上交换出去,如此可能会出现虚拟内存中没有足够空间来存储这些交换页面的问题,最终会导致linux出现假死机、服务异常等问题。
特别是在Linux中编写服务器程序时,经常会向系统大量申请或释放内存,上述问题会导致申请内存失败,而且,服务器程序需要大量内存操作时会用链表的形式,内存地址中会记录下一个数据的地址,根据指针的方式去寻找下一个数据,这样数据会分配到内存的各个地方,也不便于管理和调试。
发明内容
有鉴于此,本发明实施例的目的是提出一种内存管理方法和装置,能够有效解决Linux系统内存管理方面存在的缺陷。
为了达到上述目的,本发明实施例提出一种内存管理方法,包括以下步骤:
当程序启动时,为程序向系统申请预设容量的内存块;
根据程序中请求的内存大小从所述内存块中查找可用内存;
输出查找到的可用内存的地址。
本发明实施例中一次性向系统申请一块足够大的内存,在申请的足够大的内存中管理程序中的申请和释放内存,既解决了系统内存管理方面存在的缺陷,又能很好掌控程序在内存使用中的具体情况,便于调试程序。
作为上述技术方案的优选,根据程序中请求的内存大小从所述内存块中查找可用内存的步骤包括:根据程序中请求的内存大小,优先从所述内存块中的已分配并释放的内存中查找可用内存。本方案便于重复使用已分配好的内存。
作为上述技术方案的优选,根据程序中请求的内存大小从所述内存块中查找可用内存的步骤包括:
判断程序中请求的内存大小的值是否等于预设值;
当程序中请求的内存大小的值不等于预设值时,将程序中请求的内存大小的值增大至等于预设值;
根据增大后的内存大小的值,优先从所述内存块中的已分配并释放的内存中查找可用内存。
在本实施例中,将请求的内存大小向上与预设值对齐,便于下次再申请小于预设值大小的内存时能够快速命中此次申请并释放后的内存。
作为上述技术方案的优选,判断程序中请求的内存大小的值是否等于预设值的步骤包括:
判断程序中请求的小于预设阈值的内存大小的值是否等于2的指数倍;以及
判断程序中请求的大于预设阈值的内存大小的值是否等于4K的整数倍;
将程序中请求的内存大小的值增大至等于预设值的步骤包括:
将程序中请求的小于预设阈值的内存大小的值增大至等于2的指数倍;以及
将程序中请求的大于预设阈值的内存大小的值增大至等于4K的整数倍。
本方案在请求的内存大小在预设阈值以下时采用指数对齐、在预设阈值以上时以4K为单位线性对齐,既实现了对齐,又不会造成太多的资源浪费。
作为上述技术方案的优选,所述方法还包括步骤:
将程序中释放的内存回收至所述内存块中。
采用本方案可以重复使用内存。
作为上述技术方案的优选,所述方法还包括步骤:
定期整理所述内存块中的内存碎片。
本方案使零碎的内存碎片连接成大块的内存,以便下次申请大块内存时能够成功分配。
本发明实施例还提出一种内存管理装置,包括:
申请模块,用于当程序启动时,为程序向系统申请预设容量的内存块;
查找模块,用于根据程序中请求的内存大小从所述内存块中查找可用内存;
输出模块,用于输出查找到的可用内存的地址。
作为上述技术方案的优选,所述查找模块用于:根据程序中请求的内存大小,优先从所述内存块中的已分配并释放的内存中查找可用内存。
作为上述技术方案的优选,所述查找模块包括:
判断单元,用于判断程序中请求的内存大小的值是否等于预设值;
处理单元,用于当程序中请求的内存大小的值不等于预设值时,将程序中请求的内存大小的值增大至等于预设值;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于天脉聚源(北京)传媒科技有限公司,未经天脉聚源(北京)传媒科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310064521.9/2.html,转载请声明来源钻瓜专利网。
- 上一篇:基于ZigBee的无线ECG心电采集诊断系统
- 下一篇:发热护耳护颈套