一种数据处理方法及装置制造方法及图纸

技术编号:20915880 阅读:21 留言:0更新日期:2019-04-20 09:33
本发明专利技术提供一种数据处理方法及装置,所述方法包括:划分多个不同类型的内存区域;其中,不同类型的内存区域用于存储不同类型的数据,任一类型的内存区域包括预设数量的内存分片,同一类型的内存区域中各内存分片大小相同;基于所述多个不同类型的内存区域响应针对不同类型的内存区域的内存分片申请请求和释放请求。应用本发明专利技术实施例可以优化内存空间管理,降低内存泄漏的概率。

A Data Processing Method and Device

The invention provides a data processing method and device, which includes: dividing several different types of memory areas; among them, different types of memory areas are used to store different types of data, and any type of memory area includes a preset number of memory slices, each of which has the same size in the same type of memory area; and based on the different types of memory. Region responds to memory slicing requests and release requests for different types of memory regions. The embodiment of the invention can optimize memory space management and reduce the probability of memory leakage.

【技术实现步骤摘要】
一种数据处理方法及装置
本专利技术涉及计算机
,尤其涉及一种数据处理方法及装置。
技术介绍
内存泄漏(MemoryLeak)是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,进而导致程序运行速度减慢甚至系统崩溃等严重后果。随着计算机应用需求的日益增加,应用程序的设计与开发也相应的日趋复杂,开发人员在程序实现的过程中处理的变量也大量增加;此外,随着应用类型的日益增加,内存管理也越来越重要,如何有效进行内存分配和释放,防止内存泄漏的问题变得越来越突出。
技术实现思路
本专利技术提供一种数据处理方法及装置,以解决现有内存管理技术容易出现内存泄漏的问题。根据本专利技术的第一方面,提供一种数据处理方法,包括:划分多个不同类型的内存区域;其中,不同类型的内存区域用于存储不同类型的数据,任一类型的内存区域包括预设数量的内存分片,同一类型的内存区域中各内存分片大小相同;基于所述多个不同类型的内存区域响应针对不同类型的内存区域的内存分片申请请求和释放请求。根据本专利技术的第二方面,提供一种数据处理装置,包括:划分单元,用于划分多个不同类型的内存区域;其中,不同类型的内存区域用于存储不同类型的数据,任一类型的内存区域包括预设数量的内存分片,同一类型的内存区域中各内存分片大小相同;处理单元,用于基于所述多个不同类型的内存区域响应针对不同类型的内存区域的内存分片申请请求和释放请求。应用本专利技术公开的技术方案,通过划分多个不同类型的内存区域,各不同类型的内存区域用于存储不同类型的数据,任一类型的内存区域包括预设数量的相同大小的内存分片,当不同类型的数据需要进行内存申请和释放时,以内存分片作为最小内存单元进行内存空间的分配和释放,优化了内存空间管理,降低了内存泄漏的概率。附图说明图1是本专利技术实施例提供的一种数据处理方法的流程示意图;图2是本专利技术实施例提供的一种内存区域划分的示意图;图3A是本专利技术实施例提供的一种单个BUF申请和释放的示意图;图3B是本专利技术实施例提供的一种批量BUF申请和释放的示意图;图4是本专利技术实施例提供的一种数据处理装置的结构示意图;图5是本专利技术实施例提供的另一种数据处理装置的结构示意图;图6是本专利技术实施例提供的另一种数据处理装置的结构示意图。具体实施方式为了使本
的人员更好地理解本专利技术实施例中的技术方案,并使本专利技术实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本专利技术实施例中技术方案作进一步详细的说明。请参见图1,为本专利技术实施例提供的一种数据处理方法的流程示意图,其中,该数据处理方法可以应用于以SSD(SolidStateDisk,固态硬盘)为存储介质的网络设备,如图1所示,该数据处理方法可以包括以下步骤:步骤101、划分多个不同类型的内存区域,其中,该多个不同类型的内存区域用于存储不同类型的数据,任一类型的内存区域包括预设数量的内存分片,同一类型的内存区域中各内存分片大小相同。本专利技术实施例中,考虑到现有使用malloc、recalloc、calloc、free等函数直接对内存进行申请或释放操作的实现方式中,分配的内存的大小和位置随机性过大,且各种不同类型数据分配的内存空间相互混杂,不利于内存空间管理,容易导致内存泄漏的发生,因此,为了优化内存空间管理,减少内存泄漏的发生,可以在网络设备的内存空间划分多个不同类型的内存区域,该多个不同类型的内存区域可以用于存储不同类型的数据,任一类型的内存区域包括预设数量的内存分片,进而,可以以内存分片为最小内存单元进行内存申请和释放。其中,同一类型内存区域中各内存分片大小相同;不同类型内存区域内存分片大小可以相同,也可以不同。举例来说,可以预先配置需要使用的内存区域的类型、各类型内存区域下内存分片的大小、各类型内存区域下内存分片的数量等。在系统初始化时,可以根据上述配置对内存空间进行初始化,实现内存区域的划分。其中,各类型内存区域下内存分片的数量可以根据对应类型数据的存储需求(可以由管理人员根据经验证确定)确定,以保证为各类型数据预留足够的内存空间。可选地,上述多个不同类型的内存区域可以包括但不限于用于存储指令的内存区域、用于存储Boot(引导)信息的内存区域、用于存储CPU(CenterProcessUnit,中央处理单元)运行信息的内存区域、用于存储指令状态的内存区域、用于存储系统中垃圾回收信息的内存区域、用于存储错误信息的内存区域、用于存储临时数据的内存区域、用于存储Plane(平面)状态的内存区域、用于存储Block(区块)状态的存储区域以及用于存储Die(核心)状态的存储区域等。在本专利技术其中一个实施例中,上述划分多个不同类型的内存区域,可以包括:将一段连续的内存空间划分为多个不同类型的内存区域;其中,上述多个不同类型的内存区域的首地址满足以下条件:BASETYPEi+1=BASETYPEi+SIZETYPEi其中,1≤i≤n-1,n为不同类型的内存区域的数量,BASETYPEi为多个不同类型的内存区域中第i个内存区域的首地址,SIZETYPEi为该第i个内存区域所占的内存空间大小。在该实施例中,为了便于内存空间管理,可以将一段连续的内存空间划分为多个不同类型的内存区域。其中,多个不同类型的内存区域在该连续内存空间中的顺序可以随机或者按照其它策略确定,本专利技术实施例对此不做限定。举例来说,请参见图2,多个类型的内存区域在内存空间中的分布可以如图2所示,各类型内存区域在内存中的位置由两个因素决定:其一为BASE(首地址),其二为SIZE(大小)。二者的值可以根据需求设定。其中,TYPE1的BASE地址(BASETYPE1)为STARTADDR,即可用于分配的内存空间首地址,大小(SIZETYPE1)为该类型内存区域所占的内存空间大小,TYPE2的BASE(BASETYPE2)计算公式为:BASETYPE2=BASETYPE1+SIZETYPE1同理,由TYPE2的BASE和SIZE可以算出TYPE3的BASE:BASETYPE3=BASETYPE2+SIZETYPE2以此类推,可以得到第n段内存区域(即TYPEn)的BASE(BASETYPEn)。通过上述方式,将内存按照实际需求进行了批量的划分。步骤102、基于所划分的多个不同类型的内存区域响应针对不同类型的内存区域的内存分片申请请求和释放请求。本专利技术实施例中,划分了多个不同类型的内存区域之后,可以基于所划分的多个不同类型的内存区域响应针对不同类型的内存区域的内存分片申请请求和释放请求。其中,可以通过封装申请接口和释放接口,用于以内存分片为最小内存单元进行内存申请和释放。可见,在图1所示方法流程中,通过划分多个不同类型的内存区域,各不同类型的内存区域用于存储不同类型的数据,任一类型的内存区域包括预设数量的相同大小的内存分片,当不同类型的数据需要进行内存申请和释放时,以内存分片作为最小内存单元进行内存空间的分配和释放,优化了内存空间管理,降低了内存泄漏的概率。在本专利技术其中一个实施例中,上述基于所划分的多个不同类型的内存区域响应针对不同类型的内存区域的内存分片申请请求,可以包括:当接收到针对目标内存区域的指定数量的内存分片的申请请求时,将目标内存区域一端的连续指定数量的内存分本文档来自技高网
...

【技术保护点】
1.一种数据处理方法,其特征在于,包括:划分多个不同类型的内存区域;其中,不同类型的内存区域用于存储不同类型的数据,任一类型的内存区域包括预设数量的内存分片,同一类型的内存区域中各内存分片大小相同;基于所述多个不同类型的内存区域响应针对不同类型的内存区域的内存分片申请请求和释放请求。

【技术特征摘要】
1.一种数据处理方法,其特征在于,包括:划分多个不同类型的内存区域;其中,不同类型的内存区域用于存储不同类型的数据,任一类型的内存区域包括预设数量的内存分片,同一类型的内存区域中各内存分片大小相同;基于所述多个不同类型的内存区域响应针对不同类型的内存区域的内存分片申请请求和释放请求。2.根据权利要求1所述的方法,其特征在于,所述划分多个不同类型的内存区域,包括:将一段连续的内存空间划分为多个不同类型的内存区域;其中,所述多个不同类型的内存区域的首地址满足以下条件:BASETYPEi+1=BASETYPEi+SIZETYPEi其中,1≤i≤n-1,n为不同类型的内存区域的数量,BASETYPEi为所述多个不同类型的内存区域中第i个内存区域的首地址,SIZETYPEi为该第i个内存区域所占的内存空间大小。3.根据权利要求1所述的方法,其特征在于,所述基于所述多个不同类型的内存区域响应针对不同类型的内存区域的内存分片申请请求,包括:当接收到针对目标内存区域的指定数量的内存分片的申请请求时,将所述目标内存区域一端的连续指定数量的内存分片分配给请求方,并更新所述目标内存区域该端的内存分片的信息;其中,所述目标内存区域一端为所述目标内存区域头部或尾部。4.根据权利要求3所述的方法,其特征在于,所述基于所述多个不同类型的内存区域响应针对不同类型的内存区域的内存分片释放请求,包括:当接收到针对所述目标内存区域的所述指定数量的内存分片的释放请求时,将所述连续指定数量的内存分片加入到所述目标内存区域的另一端,并更新所述目标内存区域该另一端的内存分片的信息。5.根据权利要求4所述的方法,其特征在于,所述方法还包括:对于所述目标内存区域,记录所述目标内存区域对应的HeadTYPEi、TailTYPEi、NextBUFj、IDBUFj;其中,HeadTYPEi为所述目标内存区域的头部的内存分片的地址,TailTYPEi为所述目标内存区域的尾部的内存分片的地址、NextBUFj为所述目标内存区域中第j个内存分片的下一个内存分片的标识ID、IDBUFj为所述目标内存区域中第j个内存分片的ID,1≤j≤m,m为该内存区域中内存分片的总数。6.根据权利要求5所述的方法,其特征在于,所述将所述目标内存区域一端的连续指定数量的内存分片的分配给请求方,并更新所述目标内存区域该端的内存分片的信息,包括:当所述指定数量为1个时,根据所记录的所述目标内存区域对应的HeadTYPEi或TailTYPEi,将所述目标内存区域的一端的第一目标内存分片的ID分配给请求方,并根据所记录的所述目标内存区域对应的NextBUFj将所述第一目标内存分片相邻的未分配的内存分片的地址作为HeadTYPEi或TailTYPEi;当所述指定数量为多个时,根据所记录的所述目标内存区域对应的HeadTYPEi或TailTYPEi、以及所述目标内存区域对应的NextBUFj,将所述目标内存区域的一端的连续所述指定数量的第二目标内存分片的ID分片给请求方,并将所述第二目标内存分片相邻的未分配的内存分片的地址作为HeadTYPEi或TailTYPEi。7.根据权利要求5所述的方法,其特征在于,所述将所述连续指定数量的内存分片加入到所述目标内存区域的另一端,并更新所述目标内存区域该另一端的内存分片的信息,包括:当所述指定数量为1个时,将该内存分片加入到所述目标内存区域的另一端,并将所记录的TailTYPEi或HeadTYPEi更新为该内存分片的地址;当所述指定数量为多个时,将所述指定数量的内存分片加入到所述目标内存区域的另一端,并将所记录的TailTYPEi更新为所述指定数量的内存分片中最后一个内存分片的地址,或将所记录的HeadTYPEi更新为所述指定数量的内存分片中第一个内存分片的地址。8.根据权利要求1所述的方法,其特征在于,所述方法还包括:对于任一类型的内存区域,当该内存区域的可用内存分片的数量小于第一预设阈值时,发送第一告警消息;或/和,对于任一...

【专利技术属性】
技术研发人员:唐侃毅刘定星
申请(专利权)人:新华三技术有限公司
类型:发明
国别省市:浙江,33

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

1