本申请提供内存管理方法和装置。该方法包括:获取内存分配请求;判断内存分配请求所请求的内存大小是否超过临时内存池的数据存储空间的未用部分的大小;如果所请求的内存大小未超过未用部分的大小,从临时内存池的数据存储空间的未用部分中分配所请求的内存,分配的内存的首地址为未用部分的首地址,并相应地更新未用部分的大小和首地址,以及将临时内存池的已使用次数增加1。根据本申请的临时内存池,占用的额外空间少,内存分配/释放等开销可以忽略不计,尤其适用于内存生命周期短且使用频率高的应用场景。
【技术实现步骤摘要】
内存管理方法和装置
本申请涉及计算机
,特别涉及内存管理方法和装置。
技术介绍
计算机在执行任务时往往需要申请内存以存储数据,并在任务完成后释放这些内存,以避免造成内存泄露。当这些任务处理的数据量骤增时,频繁的分配内存和释放内存的操作会大大增加系统开销,并且可能产生大量内存碎片,导致系统性能下降,降低程序的运行效率。现有技术中,通常采用内存池技术来缓解频繁的内存分配和释放产生的系统开销。内存池技术是先从操作系统的内存空间分配一块内存,并将其划分为若干块固定大小的内存块,内存分配和内存释放都优先在内存池中进行。只有当内存池中的内存不够时,才调用操作系统的内存管理接口进行内存的分配和释放。现有的内存池可以缓解操作系统频繁的申请内存和释放内存造成的系统性能消耗,但需要额外的内存空间来管理维护内存池中每一个内存块的空闲和使用情况。此外,由于通常采用固定大小的内存块,实际使用过程中要么限定于同一类数据结构的内存分配和释放(例如各个内存块大小相等),要么在内存分配时需要找到与实际使用内存大小最匹配的内存块予以使用(例如内存块的大小为2的幂次方),限制了应用范围。而且,在分配内存时,内存管理系统可能需要从多个内存块中查找适用的内存块,这也将产生一定开销。由于上述缺陷,在例如高频次存取等的一些场景中,现有内存池技术难以令人满意。
技术实现思路
有鉴于此,本申请提供适用于高频次存取等场景的内存管理方法和装置。具体地,本申请是通过如下技术方案实现的:一种内存管理方法,应用于内存管理系统,所述方法包括:获取内存分配请求;判断所述内存分配请求所请求的内存大小是否超过临时内存池的数据存储空间的未用部分的大小;如果所请求的内存大小未超过所述临时内存池的数据存储空间的未用部分的大小,从所述临时内存池的数据存储空间的未用部分中分配所请求的内存,分配的内存的首地址为所述未用部分的首地址,并相应地更新所述临时内存池的数据存储空间的未用部分的大小和首地址,以及将临时内存池的已使用次数增加1。一种内存管理装置,应用于内存管理系统,所述装置包括:分配请求获取单元,用于获取内存分配请求;第一判断单元,用于判断所述内存分配请求所请求的内存大小是否超过临时内存池的数据存储空间的未用部分的大小;第一内存分配单元,如果所请求的内存大小未超过所述临时内存池的数据存储空间的未用部分的大小,用于从所述临时内存池的数据存储空间的未用部分中分配所请求的内存,分配的内存的首地址为所述未用部分的首地址,并相应地更新所述临时内存池的数据存储空间的未用部分的大小和首地址,以及将临时内存池的已使用次数增加1。由以上本申请提供的技术方案可见,获取内存分配请求后,内存管理系统可判断所述内存分配请求所请求的内存大小是否超过临时内存池的数据存储空间的未用部分的大小;如果所请求的内存大小未超过所述临时内存池的数据存储空间的未用部分的大小,从所述临时内存池的数据存储空间的未用部分中分配所请求的内存,分配的内存的首地址为所述未用部分的首地址,并相应地更新所述临时内存池的数据存储空间的未用部分的大小和首地址,以及将临时内存池的已使用次数增加1。本技术方案中,优先使用临时内存池的数据存储空间,避免频繁通过操作系统的内存管理接口分配/释放空间而导致的系统性能下降;而且,相比于现有内存池方案,无需维护多个内存块的使用状况,管理临时内存池所需的额外开销非常少,此外还可灵活分配内存大小。因此,本方案非常适合频繁分配/释放内存等应用场景。附图说明图1为本申请示出的一种内存管理方法的流程图;图2为本申请示出的一种临时内存池的数据存储空间的存储结构示例性示意图;图3为本申请示出的另一种临时内存池的数据存储空间的存储结构示例性示意图;图4为本申请示出的一种内存分配方法的示例性流程图;图5为本申请示出的一种释放内存的方法的示例性流程图;图6为本申请示出的一种内存管理装置。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。请参见图1,图1为本申请示出的一种内存管理方法的流程图。所述方法应用于内存管理系统。所述方法包括下列步骤102、104和106。步骤102,获取内存分配请求。计算机在执行许多任务时都需要占用一定内存空间用于存放数据,例如,在处理日志、处理数据报文等任务时。步骤104,判断所述内存分配请求所请求的内存大小是否超过临时内存池的数据存储空间的未用部分的大小。例如,设所述内存分配请求所请求的内存大小为len,所述临时内存池的数据空间的未用部分的大小为un_alloc,可比较二者大小。步骤106,如果所请求的内存大小未超过所述临时内存池的数据存储空间的未用部分的大小,从所述临时内存池的数据存储空间的未用部分中分配所请求的内存,分配的内存的首地址为所述未用部分的首地址,并相应地更新所述临时内存池的数据存储空间的未用部分的大小和首地址,以及将临时内存池的已使用次数增加1。如上所述,如果len不大于un_alloc,则从临时内存池的数据存储空间的未用部分的首地址开始分配所请求的数据。例如,设临时内存池的数据存储空间的首地址为data,临时内存池的数据存储空间的总大小为size,已用部分的大小为alloc,则有size=un_alloc+alloc,并设未用部分的首地址为ptr。如上所述,如果len不大于un_alloc,则从临时内存池的数据存储空间的未用部分的首地址ptr开始分配长度为len的内存空间。需要说明地是,因为一些参数是彼此相关、可以互相推导得出的,所以本领域技术人员可以理解,除非有明确相反理解,本文中更新参数A并非限定于一定直接存储参数A并直接对参数A进行更新,也可以是存储并更新与参数A相关的其他参数,以达到实际可获取和维护参数A的目的。例如,可以不直接存储临时内存池的数据存储空间的未用部分的首地址ptr,而是结合数据存储空间的地址信息和未用部分的大小un_alloc,得到未用部分的首地址ptr;甚至可以既不直接存储临时内存池的数据存储空间的未用部分的首地址ptr,也不直接存储未用部分的大小un_alloc,而是直接存储并更新已用部分的大小alloc,并结合数据存储空间的地址信息,可以很方便地得到所述未用部分的首地址pt本文档来自技高网...
【技术保护点】
1.一种内存管理方法,其特征在于,所述方法应用于内存管理系统,所述方法包括:获取内存分配请求;判断所述内存分配请求所请求的内存大小是否超过临时内存池的数据存储空间的未用部分的大小;如果所请求的内存大小未超过临时内存池的数据存储空间的未用部分的大小,从临时内存池的数据存储空间的未用部分中分配所请求的内存,分配的内存的首地址为未用部分的首地址,并相应地更新临时内存池的数据存储空间的未用部分的大小和首地址,以及将临时内存池的已使用次数增加1。
【技术特征摘要】
1.一种内存管理方法,其特征在于,所述方法应用于内存管理系统,所述方法包括:获取内存分配请求;判断所述内存分配请求所请求的内存大小是否超过临时内存池的数据存储空间的未用部分的大小;如果所请求的内存大小未超过临时内存池的数据存储空间的未用部分的大小,从临时内存池的数据存储空间的未用部分中分配所请求的内存,分配的内存的首地址为未用部分的首地址,并相应地更新临时内存池的数据存储空间的未用部分的大小和首地址,以及将临时内存池的已使用次数增加1。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:如果所请求的内存大小超过临时内存池的数据存储空间的未用部分的大小,调用操作系统内存分配接口以分配所请求的内存。3.根据权利要求1所述的方法,其特征在于,所述方法还包括:获取内存释放请求;判断内存释放请求所请求释放的内存的首地址是否超出临时内存池的数据存储空间的已用部分的地址范围;如果所请求释放的内存的首地址未超出临时内存池的数据存储空间的已用部分的地址范围,将临时内存池的已使用次数减1。4.根据权利要求3所述的方法,其特征在于,所述方法还包括:当临时内存池的已使用次数减少为0时,将临时内存池的数据存储空间未用部分的大小和首地址恢复为数据存储空间为空闲状态时的初始值。5.根据权利要求3所述的方法,其特征在于,所述方法还包括:如果所请求释放的内存的首地址超出临时内存池的数据存储空间的已用部分的地址范围,调用操作系统内存释放接口以释放所请求释放的内存。6.根据权利要求1所述的方法,其特征在于,所述方法还包括:调用操作系统内存分配接口以分配存储空间作为临时内存池;在临时内存池的参数存储空间存储并初始化下列参数中的部分或全部:数据存储空间的首地址,数据存储空间的总大小,数据存储空间的地址范围,数据存储空间的未用部分的大小,数据存储空间的已用部分的大小,临时内存池的已使用次数。7.一种内存管理装置,其特征在于,所述装置应用于内存管理系统,所述装置包括:分配请求获取单元,用于获取内存分配请求;第一...
【专利技术属性】
技术研发人员:吴庆,
申请(专利权)人:杭州迪普科技股份有限公司,
类型:发明
国别省市:浙江,33
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。