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.根据权利要求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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。