本发明专利技术公开了内存管理方法及装置,该方法包括:采用接收内存申请,其中,内存申请用于申请第一容量的内存;从第一内存池中分配一片第一内存,其中,第一内存池管理预定单元长度的内存,预定单元长度大于第一容量;第一内存池是根据总内存的容量划分的至少一个内存池中的其中之一,不同的内存池管理不同单元长度的内存;从第一内存中切割出够内存申请使用的内存,将第一内存中剩余的内存加入到对应的内存池中,解决现有技术中内存单元大小和数量固定而导致在分配内存时存在的不足,从而提高了内存使用效率。
【技术实现步骤摘要】
本专利技术涉及内存领域,具体而言,涉及内存管理方法及装置。
技术介绍
申请号为200910079057,专利技术名称为内存管理方法的专利,公开了一种内存管理方法,其方法是把内存区域划分为托干内存分区和若干单元内存块。不足之处是:内存单元大小和数量在任务启动的时候就已经确定,在实际使用过程中不够灵活。实际表现为:当频繁申请了某一个固定长度内存超过之前预定义的最大值时,则会占用更大长度的内存单元,这就会造成浪费。如果申请的小长度内存的数量超过了其所有长度单元的内存数量的总和时,内存分配则会失败。在现有技术中内存单元大小和数量固定而导致在分配内存时存在不足。
技术实现思路
本专利技术提供了内存管理方法及装置,以至少解决现有技术中内存单元大小和数量固定而导致在分配内存时存在的不足。根据本专利技术的一个方面,提供了一种内存管理方法,包括:接收内存申请,其中,所述内存申请用于申请第一容量的内存;从第一内存池中分配一片第一内存,其中,所述第一内存池管理预定单元长度的内存,所述预定单元长度大于所述第一容量;所述第一内存池是根据总内存的容量划分的至少一个内存池中的其中之一,不同的内存池管理不同单元长度的内存;从所述第一内存中切割出够所述内存申请使用的内存,将所述第一内存中剩余的内存加入到对应的内存池中。进一步地,从所述第一内存中切割出够所述内存申请使用的内存包括:从所述第一内存分割出第二容量的内存供使用,并填写内存管理头信息,其中,第二容量为第一容量以及对应的所述内存管理头信息的容量和。进一步地,所述内存管理头信息包括以下至少之一:记录该内存的长度、记录前一个切割节点内存的管理头指针、记录用于检验该内存节点的信息、前
一个相邻内存块头部信息地址指针。进一步地,所述方法还包括:释放申请的所述内存,其中,释放申请的所述内存包括:从所述内存管理信息获取该段内存的长度以及该段内存相邻内存的管理头指针;设置该段内存的未使用标志位;获取相邻节点内存的管理头信息,如果该内存也是未使用的则与相邻的内存进行合并,更新内存管理头信息中的长度;如果相邻节点的内存为已使用,则不合并,直接将该段内存添加到所属的内存池未使用链表。进一步地,根据总内存的容量划分内存池包括:内存池的划分以N的倍数为基数,其中,N为自然数。根据本专利技术的另一个方面,还提供给了一种内存管理装置,包括:接收模块,用于接收内存申请,其中,所述内存申请用于申请第一容量的内存;分配模块,用于从第一内存池中分配一片第一内存,其中,所述第一内存池管理预定单元长度的内存,所述预定单元长度大于所述第一容量;所述第一内存池是根据总内存的容量划分的至少一个内存池中的其中之一,不同的内存池管理不同单元长度的内存;分割模块,用于从所述第一内存中切割出够所述内存申请使用的内存,将所述第一内存中剩余的内存加入到对应的内存池中。进一步地,所述分割模块,用于从所述第一内存分割出第二容量的内存供使用,并填写内存管理头信息,其中,第二容量为第一容量以及对应的所述内存管理头信息的容量和。进一步地,所述内存管理头信息包括以下至少之一:记录该内存的长度、记录前一个切割节点内存的管理头指针、记录用于检验该内存节点的信息、前一个相邻内存块头部信息地址指针。进一步地,还包括:释放模块,其中,所述释放模块包括:获取单元,用于从所述内存管理信息获取该段内存的长度以及该段内存相邻内存的管理头指针;设置单元,用于设置该段内存的未使用标志位;处理单元,用于获取相邻节点内存的管理头信息,如果该内存也是未使用的则与相邻的内存进行合并,更新内存管理头信息中的长度;如果相邻节点的内存为已使用,则不合并,直接将该段内存添加到所属的内存池未使用链表。进一步地,内存池的划分以N的倍数为基数,其中,N为自然数。通过本专利技术,采用接收内存申请,其中,所述内存申请用于申请第一容量
的内存;从第一内存池中分配一片第一内存,其中,所述第一内存池管理预定单元长度的内存,所述预定单元长度大于所述第一容量;所述第一内存池是根据总内存的容量划分的至少一个内存池中的其中之一,不同的内存池管理不同单元长度的内存;从所述第一内存中切割出够所述内存申请使用的内存,将所述第一内存中剩余的内存加入到对应的内存池中,解决现有技术中内存单元大小和数量固定而导致在分配内存时存在的不足,从而提高了内存使用效率。附图说明此处所说明的附图用来提供对本专利技术的进一步理解,构成本申请的一部分,本专利技术的示意性实施例及其说明用于解释本专利技术,并不构成对本专利技术的不当限定。在附图中:图1是根据本专利技术实施例的内存管理方法的流程图;图2是根据本专利技术实施例内存申请时内存切割示意图;图3是根据本专利技术实施例的内存释放时内存块合并的示意图;图4是根据本专利技术实施例的10M受管理内存分布示意图。具体实施方式为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例;需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。在本实施例中,提供了一种内存管理方法,图1是根据本专利技术实施例的内存管理方法的流程图,如图1所示,该方法包括如下步骤:步骤S102,接收内存申请,其中,内存申请用于申请第一容量的内存;步骤S104,从第一内存池中分配一片第一内存,其中,第一内存池管理预定单元长度的内存,预定单元长度大于第一容量;第一内存池是根据总内存的容量划分的至少一个内存池中的其中之一,不同的内存池管理不同单元长度的内存。内存池的划分可以有多种方式,例如,内存池的划分可以以N的倍数
为基数,其中,N为自然数。步骤S106,从第一内存中切割出够内存申请使用的内存,将第一内存中剩余的内存加入到对应的内存池中。通过上述步骤,内存基本长度可变,解决了现有技术中内存单元大小和数量固定而导致在分配内存时存在的不足,提高了内存资源利用率,减少了操作系统内存碎片的产生量。在一个可选实施例中,还可以增加内存管理头信息,此时,从第一内存中切割出够内存申请使用的内存包括:从第一内存分割出第二容量的内存供使用,并填写内存管理头信息,其中,第二容量为第一容量以及对应的内存管理头信息的容量和。可选地,内存管理头信息包括以下至少之一:记录该内存的长度、记录前一个切割节点内存的管理头指针、记录用于检验该内存节点的信息、前一个相邻内存块头部信息地址指针。内存管理头信息中的内容可以根据需要设置。在一个可选实施例中,还可以释放申请的内存。例如,从内存管理信息获取该段内存的长度以及该段内存相邻内存的管理头指针;设置该段内存的未使用标志位;获取相邻节点内存的管理头信息,如果该内存也是未使用的则与相邻的内存进行合并,更新内存管理头信息中的长度;如果相邻节点的内存为已使用,则不合并,直接将该段内存添加到所属的内存池未使用链表。在本实施例中还提供给了一种内存管理装置,包括:接收模块,用于接收内存申请,其中,内存申请用于申请第一容量的内存;分配模块,用于从第一内存池中分配一片第一内存,其中,第一内本文档来自技高网...
【技术保护点】
一种内存管理方法,其特征在于包括:接收内存申请,其中,所述内存申请用于申请第一容量的内存;从第一内存池中分配一片第一内存,其中,所述第一内存池管理预定单元长度的内存,所述预定单元长度大于所述第一容量;所述第一内存池是根据总内存的容量划分的至少一个内存池中的其中之一,不同的内存池管理不同单元长度的内存;从所述第一内存中切割出够所述内存申请使用的内存,将所述第一内存中剩余的内存加入到对应的内存池中。
【技术特征摘要】
1.一种内存管理方法,其特征在于包括:接收内存申请,其中,所述内存申请用于申请第一容量的内存;从第一内存池中分配一片第一内存,其中,所述第一内存池管理预定单元长度的内存,所述预定单元长度大于所述第一容量;所述第一内存池是根据总内存的容量划分的至少一个内存池中的其中之一,不同的内存池管理不同单元长度的内存;从所述第一内存中切割出够所述内存申请使用的内存,将所述第一内存中剩余的内存加入到对应的内存池中。2.根据权利要求1所述的方法,其特征在于,从所述第一内存中切割出够所述内存申请使用的内存包括:从所述第一内存分割出第二容量的内存供使用,并填写内存管理头信息,其中,第二容量为第一容量以及对应的所述内存管理头信息的容量和。3.根据权利要求2所述的方法,其特征在于,所述内存管理头信息包括以下至少之一:记录该内存的长度、记录前一个切割节点内存的管理头指针、记录用于检验该内存节点的信息、前一个相邻内存块头部信息地址指针。4.根据权利要求2或3所述的方法,其特征在于,所述方法还包括:释放申请的所述内存,其中,释放申请的所述内存包括:从所述内存管理信息获取该段内存的长度以及该段内存相邻内存的管理头指针;设置该段内存的未使用标志位;获取相邻节点内存的管理头信息,如果该内存也是未使用的则与相邻的内存进行合并,更新内存管理头信息中的长度;如果相邻节点的内存为已使用,则不合并,直接将该段内存添加到所属的内存池未使用链表。5.根据权利要求1至3中任一项所述的方法,其特征在于,根据总内存的容量划分内存池包括:内存池的划分以N的倍数为基数,其中,N为自然数...
【专利技术属性】
技术研发人员:刘君,王锦伟,刘凯,彭云雄,
申请(专利权)人:北京信威通信技术股份有限公司,深圳信威通信技术有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。