[发明专利]一种内存分配办法在审
申请号: | 202111198865.X | 申请日: | 2021-10-14 |
公开(公告)号: | CN113946444A | 公开(公告)日: | 2022-01-18 |
发明(设计)人: | 张令;刘非;沈建春;黄俊斌 | 申请(专利权)人: | 杭州国芯科技股份有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50 |
代理公司: | 杭州君度专利代理事务所(特殊普通合伙) 33240 | 代理人: | 陈炜 |
地址: | 310012 浙江省杭州市文*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 内存 分配 办法 | ||
本发明公开了一种内存分配办法。用户首次申请内存时,向操作系统申请内存块,同时生成一个数据块,并将申请内存块的指针保留在数据块内;数据块内包含有标识符、申请内存块大小、热度值;将数据块放入使用表;用户再次申请内存块时,从空闲表内寻找标识符和申请内存块大小相同的数据块;如果找到,将数据块返回用户使用,并将数据块由空闲表移动到使用表;如果没有找到,则本次申请为首次申请。用户释放内存时,将数据块由使用表移动到空闲表。如果系统内存不足,优先释放热度值小的数据块。采用本发明方法,在高频次地申请释放同样大小的内存块时,不再每次都经过操作系统,避免频繁系统调用带来的额外开销,同时提升内存利用率。
技术领域
本发明属于计算机技术领域,涉及一种内存分配办法,具体是一种用于在嵌入式软件中管理内存分配的方法。
背景技术
嵌入式系统使用越来越广泛,很多领域都需要专用的嵌入式硬件和嵌入式软件,并且运行嵌入式软件的硬件的性能不会很强。如何在有限的硬件性能下提升软件效率是一个很重要的研究方向。其中,嵌入式软件如何进行内存高效合理管理是其中一个难点问题。一般来说,为了内存利用率会采用从操作系统申请内存,用完后再释放的设计。但是操作系统频繁申请释放内存会带来额外的系统开销,有时候为了性能又采用了固定内存的设计方法,但是这种方法又带来了内存使用率不高的问题。因此,急需一种新的内存分配管理办法,在内存频繁使用时避免系统调用,提升系统性能,在内存不足时或者模块退出时又能让操作系统回收内存,提升内存使用率。
发明内容
本发明的目的就是针对现有技术的不足,提供一种基于操作系统的内存申请释放增加了一个新的内存分配办法。
本发明方法包括申请内存、释放内存、清除缓存。具体如下:
用户首次申请内存时,向操作系统申请内存块,同时生成一个数据块MallocPackage,并将申请内存块的指针*P保留在Malloc Package内;Malloc Package内包含有用户传入的本次申请标识符ID、申请内存块大小Size,以及Malloc Package自身的热度值Hot;将Malloc Package放入使用表Malloc;
用户再次申请内存块时,从空闲表Free内寻找ID和Size与本次申请相同的MallocPackage;如果找到,则将找到的Malloc Package返回用户使用,同时将Malloc Package由Free表移动到Malloc表;如果没有找到,则本次申请为首次申请。
用户释放内存时,将Malloc Package由Malloc表移动到Free表。
用户申请内存时如果系统内存不足,按照热度值hot释放Free表中的MallocPackage到系统,优先释放热度值hot小的Malloc Package。允许用户调用清除缓存接口,将Free表中全部Malloc Package释放。
采用本发明方法,在高频次地申请释放同样大小的内存块时,不再每次都经过操作系统,避免频繁系统调用带来的额外开销。同时,当内存不足是能够把内存块还给操作系统,提升内存利用率。
附图说明
图1为本发明方法中申请内存的流程图;
图2为本发明方法中释放内存的流程图;
图3为本发明方法中清除缓存的流程图。
具体实施方式
以下结合附图对本发明做进一步说明。
本发明方法包括申请内存、释放内存、清除缓存。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州国芯科技股份有限公司,未经杭州国芯科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111198865.X/2.html,转载请声明来源钻瓜专利网。