一种内存分配的处理方法及装置制造方法及图纸

技术编号:16179121 阅读:27 留言:0更新日期:2017-09-12 01:45
本申请实施例公开了一种内存分配的处理方法及装置。所述方法包括:获取内存申请信息,判断申请内存是否小于建立的内存池中内存块的最大可分配内存;当判断所述申请内存大于所述最大可分配内存时,根据内存块的数据头中记录的大块内存信息,从大块内存中分配内存给申请内存;否则,判断所述申请内存是否大于当前内存块的空闲内存,当判断所述申请内存小于当前内存块的空闲内存时,判断当前内存块的当前剩余空间是否满足申请内存的需求;若所述当前内存块的当前剩余空间满足所述申请内存的需求,从所述当前内存块的当前剩余空间中分配内存给所述申请内存。所述方法及装置可以减少内存分配的时间,提高系统内存利用率,优化系统内存分配效率。

Memory allocation processing method and device

The embodiment of the present application discloses a memory allocation processing method and device. The method comprises: acquiring memory application information, determine the application memory is less than the maximum memory pool block of memory allocated memory; if the application memory is greater than the maximum memory allocation, according to the data recorded by the head of the big memory channel block of memory in information, allocate memory from memory to block application of memory; otherwise, whether the application memory is greater than the current memory block of free memory, when judging whether the application memory is less than the current memory block of free memory, to determine whether the current residual current spatial memory blocks meet the memory requirement; if the current memory blocks the remaining space to meet the application of memory the need to allocate memory from the remaining space in the current block of memory to the application memory. The method and the device can reduce the memory allocation time, improve the utilization ratio of the system memory, and optimize the memory allocation efficiency of the system.

【技术实现步骤摘要】

本申请涉及内存管理
,特别涉及一种内存分配的处理方法及装置
技术介绍
随着通信技术的发展,人们可以通过在终端与服务器之间建立网络连接,实现数据、信息的交互传输。不仅如此,不同终端之间也可以采用数据传输的方式进行交互沟通,人们便可以通过上述传输方式建立的互联网络获取所需的信息。通常情况下,在互联网络中,当通讯双方有数据交互时,需要建立一个连接,数据传输完成后,则断开此连接,即每次连接只完成一项业务的发送,这样的连接称为短连接。但是,就不同终端而言,用户可能在短时间内进行多次通信,如:运行在终端系统中的具有联网功能的程序或线程,可以向服务器端发起多次访问请求TCP(TransmissionControlProtocol,传输控制协议)连接。如果每次通信都是先连接,再传输的话,那么数据传输的处理速度必将受到严重影响。同时,频繁的短连接创建,需要服务器端不断监听,并不断进行连接确认,不仅增加服务器的工作负担,而且浪费了网络带宽资源。为解决上述TCP短连接的因频繁建立和断开链路产生的效率问题,可以采用TCP长连接通讯方式代替短连接通讯,TCP长连接可以在一个连接上可以连续发送多个数据包。虽然采用长连接的方式进行通信可以避免短时间内重复的连接请求,但是,长连接一般是由终端建立,每一条长连接可以传输大量数据,假设有大量请求连接的情况,服务器需要对外提供大批量的不间断的进行数据传输的长连接。此时,需要一种可以灵活分配内存的方法,可以优化资源分配机制,减轻服务器的负担。现有技术中,在长连接通讯过程中,服务器在接收到分配一定大小内存的请求时,可以首先查找内部维护的内存空闲块表,并且需要根据一定的算法(例如分配最先找到的不小于申请大小的内存块给请求者等)找到合适大小的空闲内存块。如果该空闲内存块过大,还需要切割成已分配的部分和较小的空闲块。然后服务器更新所述内存空闲块表,完成一次内存分配。但是,在上述内存分配方法中,容易在分配后的空闲内存块中生成内存碎片,内存利用率不高,并且,由于长连接通讯过程中需要频繁地调配内存,但是空闲内存块的物理地址不连续,服务器在调用过程中需要花费较多的时间搜索可用空闲内存块,内存调配效率不高。现有技术中长连接通信的内存分配处理方法在有大量请求连接的情况下服务器需要不断的消耗资源进行计算,花费较多的时间搜索可用空闲内存块,并且容易在分配后的空闲内存块中生成内存碎片,导致服务器系统内存利用率较低,内存分配效率低下。
技术实现思路
本申请实施例的目的在于提供一种内存分配的处理方法及装置,可以减少内存分配的时间,提高系统内存利用率,优化系统内存分配效率。本申请实施例提供一种内存分配方法及装置是这样实现的:一种内存分配的处理方法,所述方法可以包括:获取内存申请信息,判断申请内存是否小于建立的内存池中内存块的最大可分配内存;当判断所述申请内存大于所述最大可分配内存时,根据所述内存块数据头中记录的大块内存信息,从大块内存中分配内存给申请内存;否则,判断所述申请内存是否大于当前内存块的空闲内存,当判断所述申请内存小于当前内存块的空闲内存时,判断当前内存块的当前剩余空间是否满足所述申请内存的需求;若所述当前内存块的当前剩余空间满足所述申请内存的需求,从所述当前内存块的当前剩余空间中分配内存给所述申请内存。一种内存分配的处理装置,所述装置可以包括:最大内存判断模块,用于获取内存申请信息,判断申请内存是否小于建立的内存池中内存块的最大可分配内存;大块内存分配模块,用于当所述最大内存判断模块判断所述申请内存大于所述最大可分配内存时,根据所述内存块数据头中记录的大块内存信息,从大块内存中分配内存给申请内存;剩余空间判断模块,用于判断所述申请内存是否大于当前内存块的空闲内存,当判断所述申请内存小于当前内存块的空闲内存时,判断当前内存块的当前剩余空间是否满足所述申请内存的需求;剩余空间分配模块,用于若所述剩余空间判断模块判断当前内存块的当前剩余空间满足所述申请内存的需求时,从所述当前内存块的当前剩余空间中分配内存给所述申请内存。本申请提供的内存分配的处理方法及装置,可以根据申请内存的大小分别从内存池或者大块内存中分配内存,在内存池内存分配中又根据判断申请内存和空闲内存的大小分别分配空闲内存或者新内存块,不仅可以满足申请内存空间的需求,还可以充分利用内存块的空间。所述内存池有利于服务器对小内存空间的集中管理,尤其针对小内存空间频繁申请的线程,可以从内存池中快速申请空间,并且大大减少内存碎片,空间利用率大大提高。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1是本申请提供的内存分配处理方法的一种实施例的方法流程图示意图;图2是本申请提供的内存块的一种实施例的结构示意图;图3是本申请提供的申请内存大于空闲内存时的内存处理方法的一种实施例的流程图;图4是本申请提供的建立新内存块的一种实施例的结构示意图;图5是本申请提供的从空闲内存分配内存方法的一种实施例的流程图;图6是本申请提供的内存释放内存的一种实施例的方法流程图;图7是本申请提供的内存分配处理装置的一种实施例的模块结构示意图;图8是本申请提供的内存分配处理装置的另一种实施例的模块结构示意图;图9是本申请提供的内存分配处理装置的另一种实施例的模块结构示意图;图10是本申请提供的剩余空间分配模块的一种实施例的模块结构示意图;图11是本申请提供的内存分配处理装置的另一种实施例的模块结构示意图;图12是本申请提供的内存分配处理装置的另一种实施例的模块结构示意图;图13是本申请提供的已释放内存链表更新模块的另一种实施例的模块结构示意图。具体实施方式为了使本
的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。下面结合附图对本申请所述的内存分配的处理方法进行详细的说明。图1是本申请提供的内存分配的处理方法的一种实施例的方法流程图示意图。虽然本申请提供了如下述实施例或附图所示的方法操作步骤,但基于常规或者无需创造性的劳动在所述方法中可以包括更多或者更少的操作步骤。在逻辑性上不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本申请实施例提供的执行顺序。所述方法在实际中的内存分配处理过程中或者装置执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。具体的本申请提供的一种内存分配的处理方法的一种实施例如图1所示,所述方法可以包括:S1:获取内存申请信息,判断申请内存是否小于建立的内存池中内存块的最大可分配内存。在长连接进程中,一般会频繁地向服务器申请小内存空间,此时,服务器会在短时间内连续接收到长连接进程发送本文档来自技高网
...
一种内存分配的处理方法及装置

【技术保护点】
一种内存分配的处理方法,其特征在于,所述方法包括:获取内存申请信息,判断申请内存是否小于建立的内存池中内存块的最大可分配内存;当判断所述申请内存大于所述最大可分配内存时,根据所述内存块的数据头中记录的大块内存信息,从大块内存中分配内存给申请内存;否则,判断所述申请内存是否大于当前内存块的空闲内存,当判断所述申请内存小于当前内存块的空闲内存时,判断当前内存块的当前剩余空间是否满足所述申请内存的需求;若所述当前内存块的当前剩余空间满足所述申请内存的需求,从所述当前内存块的当前剩余空间中分配内存给所述申请内存。

【技术特征摘要】
1.一种内存分配的处理方法,其特征在于,所述方法包括:获取内存申请信息,判断申请内存是否小于建立的内存池中内存块的最大可分配内存;当判断所述申请内存大于所述最大可分配内存时,根据所述内存块的数据头中记录的大块内存信息,从大块内存中分配内存给申请内存;否则,判断所述申请内存是否大于当前内存块的空闲内存,当判断所述申请内存小于当前内存块的空闲内存时,判断当前内存块的当前剩余空间是否满足所述申请内存的需求;若所述当前内存块的当前剩余空间满足所述申请内存的需求,从所述当前内存块的当前剩余空间中分配内存给所述申请内存。2.根据权利要求1所述的一种内存分配的处理方法,其特征在于,所述建立的内存池被设置成:被划分成包括至少一个预设固定大小的内存块;内存池中的内存块被设置成按照内存块的空闲内存从大到小的顺序排列。3.根据权利要求1或2所述的一种内存分配的处理方法,其特征在于,所述方法还包括:当判断所述申请内存大于或等于当前内存块的空闲内存时,基于当前内存块数据头记录的内存块链表依次在所述内存池中查找空闲内存大于或等于所述申请内存的可用内存块;相应地,若查找到所述可用内存块,则所述判断当前内存块的当前剩余空间是否满足所述申请内存需求包括判断所述可用内存块的当前剩余空间是否满足所述申请内存的需求。4.根据权利要求3所述的一种内存分配的处理方法,其特征在于,所述方法还包括:若在所述内存池中未查找到空闲内存大于或等于所述申请内存的可用内存块,则在所述内存池中创建新内存块,以及使用所述新内存块为所述申请内存分配内存。5.根据权利要求4所述的一种内存分配的处理方法,其特征在于,所述方法还包括:基于内存块的数据头所指示的下一个内存块,依次比较内存池中内存块的空闲内存与所述新内存块的空闲内存的大小,将所述新内存块的链表插入到所述内存池中空闲内存大于所述新内存块的空闲内存的前一个内存块与空闲内存小于所述新内存块的空闲内存的后一个内存块之间。6.根据权利要求1所述的一种内存分配的处理方法,其特征在于,所述若所述当前内存块的当前剩余空间满足所述申请内存需求,从所述当前内存块的当前剩余空间中分配内存给所述申请内存包括:若所述当前内存块的当前剩余空间满足所述申请内存的需求,优先从当前内存块的当前未分配内存空间分配内存给申请内存;若当前内存块的当前未分配内存不满足所述申请内存的需求,则从当前内存块数据头记录的已释放内存的空间地址信息中查找满足所述申请内存的需求的内存空间进行分配。7.根据权利要求6所述的一种内存分配的处理方法,其特征在于,所述方法还包括:若未能从当前内存块数据头记录的已释放内存中查找到满足所述申请内存需求的内存空间,基于当前内存块数据头记录的地址信息依次在所述内存池中查找空闲内存大于或等于所述申请内存的可用内存块;相应的,若查找到所述可用内存块,则所述判断当前内存块的当前剩余空间是否满足所述申请内存需求包括判断所述可用内存块的当前剩余空间是否满足所述申请内存的需求。8.根据权利要求7所述的一种内存分配的处理方法,其特征在于,所述方法还包括:若在所述内存池中未查找到空闲内存大于或等于所述申请内存的可用内存块,则在所述内存池中创建新内存块,以及使用所述新内存块为所述申请内存分配内存。9.根据权利要求1所述的一种内存分配的处理方法,其特征在于,所述方法还包括:获取内存释放请求信息,判断释放内存是否大于所述最大可分配内存;当判断结果为释放内存大于所述最大可分配内存时,根据所述内存释放请求信息以及数据头记录的大块内存信息定位所述释放内存对应的大块内存的首地址;释放定位得到的大块内存的数据信息,删除内存块数据头中记录的大块内存地址链表中所述释放内存对应的大块内存的首地址信息。10.根据权利要求9所述的一种内存分配的处理方法,其特征在于,所述方法还包括:当判断结果为释放内存小于所述最大可分配内存时,根据内存释放请求信息定位所述释放内存在所述内存池对应的待释放内存块中的地址,并释放所述待释放内存块的所述释放内存的内存空间;以及,获取所述待释放内存块释放内存后生成的已释放内存的内存空间地址,将所述内存空间地址插入到所述待释放内存块数据头记录的已释放内存的空间地址信息中。11.根据权利要求10所述的一种内存分配的处理方法,其特征在于,所述将所述内存空间地址插入到所述待释放内存块数据头记录的已释放内存的空间地址信息中包括:判断所述内存空间地址所在的当前节点,与所述当前节点的前一个节点和当前节点后一个节点是否为连续内存;若判断的结果为是连续内存,则将所述当前节点、所述当前节点的前一个节点、所述当前节点的后一个节点合并为一个连续内存的新节点并记录到所述待释放内存块数据头记录的已释放内存的空间地址信息中;否则,将所述内存空间地址作为新节点插入到所述待释放内存块数据头记录的已释放内存的空间地址信息中。12.根据权利要求11所述的一种内存分配的处理方法,其特征在于,所述方法还包括:判断所述新节点是否位于内存池的首个内存块,若所述新节点不是位于内存池的首个内存块,则判断所述待释放内存块的空闲内存与最大可分配内存是否相等;若判断的结果为所述待释放内存块的空闲内存与最大可分配内存相等时,释放所述待释放内存块的数据存储区域内存空间,删除待释放内存块节点。13.根据权利要求12所述的一种内存分配的处理方法,其特征在于,所述方法还包括:若判断的结果为所述待释放内存块的空闲内存与最大可分配内存不相等时,对所述内存池中内存块的空闲内存进行大小判断后将内存块设置成按照空闲内存从大到小的顺序排序。14.根据权利要1-2、6-13中任意一项所述的一种内存分配的处理方法,其特征在于,所述方法还包括:当检测到内存池的首个内存块指向下一个内存块的头部地址为空,且所述首个内存块的空闲内存与所述内存块的最大可分配内存相等时,执行销毁所述内存池,释放内存池空间。15.一种内存分配的处理装置,其特征在于,所述装置包括:最大内存判断模块,用于获取内存申请信息,判断申请内存是否小于建立的内存池中内存块的最大可分配内存;大块内存分配模块,用于当所述最大内存判断模块判断所述申请内存大于所述最大可分
\t配内存时,根据所述内存块数据头中记录的大块内存信息,从大块内存中分配内存给申请内存;剩余空...

【专利技术属性】
技术研发人员:欧阳圣
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛;KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1