一种内存池的管理方法和装置制造方法及图纸

技术编号:16216354 阅读:29 留言:0更新日期:2017-09-15 22:32
本发明专利技术提供了一种内存池的管理方法包括:按照预定的规格申请第一内存空间;对所述第一内存空间建立多个不同级别的内存管理表,并且第i+1级的内存管理表所对应的内存单元由第i级内存管理表所对应的内存单元分割得到;接收内存申请的请求,根据请求的第二内存空间的大小,在多个不同级别的内存管理表中查找与请求的第二内存空间的大小匹配的内存单元。当监测到内存单元释放时,逐级向上合并内存单元,并更新合并后的内存单元的状态,通过多个不同级别的内存管理表可以有效的适应不同大小的第二内存空间的需要,有效的提高内存的利用效率,有利于提高内存回收的完整性。

Memory pool management method and device

The present invention provides a memory pool management method comprises the following steps: according to predetermined specifications for the first memory space; a plurality of different level memory management table set up on the first memory, memory unit and memory management table corresponding to the i+1 level by level I memory management table corresponding to the memory unit segmentation; receive the application memory requests according to the request of the second memory size, memory size, in a number of different level memory management table lookup and request second memory space. When monitoring the memory unit is released, step by step to merge and update the memory unit, memory unit after the merger of the state, through more than one table memory management at different levels can effectively meet the needs of different sizes of the second memory, improve memory efficiency, improve the integrity of memory recovery.

【技术实现步骤摘要】
一种内存池的管理方法和装置
本专利技术属于内存领域,尤其涉及一种内存池的管理方法和装置。
技术介绍
在网络摄像机等视频采集领域,为了提高网络摄像机的性能和稳定性,需要使用内存池为视频申请内存以及释放视频所占用的内存的操作。而目前的视频的帧一般有I帧、P帧和B帧之分,其中I帧的大小在80KB~200KB的范围,P帧和B帧的大小在10KB~90KB的范围。不同格式的视频帧所占用的内存空间也不相同,为了更为合理的利用内存空间,一般会根据视频帧的大小来分配内存。其中,根据视频帧的大小来分配内存时,主要是通过预先申请好各种规格的内存块,根据视频帧的大小选择对应规格的内存块。虽然能够根据视频帧的大小分配对应的内存块,但是需要预先评估好所需要的内存的规格,当视频帧的大小变化丰富时,如,网络摄像机的分辨率可以是720P、2048*1536或者4K*2K,每帧的平均大小和1080P的分辨的帧大小不相同,这样程序代码需要预先评估每帧的大小,导致开发和维护成本增加,并且内存池管理的通用性不强。
技术实现思路
本专利技术的目的在于提供一种内存池的管理方法,以解决现有技术的内存池管理方法开发和维护成本大,且通用性不强的问题。第一方面,本专利技术实施例提供了一种内存池的管理方法,所述方法包括:按照预定的规格申请第一内存空间;对所述第一内存空间建立多个不同级别的内存管理表,并且第i+1级的内存管理表所对应的内存单元由第i级内存管理表所对应的内存单元分割得到;接收内存申请的请求,根据请求的第二内存空间的大小,在多个不同级别的内存管理表中查找与请求的第二内存空间的大小匹配的内存单元,其中i为自然数。结合第一方面,在第一方面的第一种可能实现方式中,所述第i+1级的内存管理表所对应的内存单元由第i级内存管理表所对应的内存单元分割得到的步骤具体为:将第i级内存管理表中的内存单元,平均分割为两份或者两份以上,将分割后的内存单元作为第i+1级内存管理表所对应的内存单元,其中第i+1级内存管理表与第i级内存管理表为两个级别相邻的内存管理表。结合第一方面,在第一方面的第二种可能实现方式中,所述内存池包括用于视频缓存的内存池,所述方法还包括:根据所述视频中的最小P帧或B帧的大小,确定最小的内存单元的大小;或者,所述第一内存空间的内存池的大小为最大P帧或I帧的大小*总帧数;或者所述第一内存空间的内存池的大小为最大P帧的大小*P帧数+最大B帧的大小*B帧数+最大I帧的大小*I帧数;或者根据上层应用定义所述第一内存空间的内存池的大小。结合第一方面,在第一方面的第三种可能实现方式中,所述接收内存申请的请求,根据请求的第二内存空间的大小,在多个不同级别的内存管理表中查找与请求的第二内存空间的大小匹配的内存单元的步骤具体为:接收内存申请的请求,获取所述内存申请的请求所申请的第二内存空间的大小;根据所述第二内存空间的大小,在多个不同级别的内存管理表中查找内存单元,使查找的内存单元的空间大于或等于所述第二内存空间的大小,并且查找的内存单元的下一级的内存单元小于所述第二内存空间的大小。第二方面,本专利技术实施例提供了一种内存释放方法,所述方法还包括:当监测到第一内存空间的内存单元中存储的数据释放时,获取释放的内存单元所对应的第i+1级内存管理表,其中,第一内存空间对应多个不同级别的内存管理表,并且第i+1级的内存管理表所对应的内存单元由第i级内存管理表所对应的内存单元分割得到;更新所述第i+1级内存管理表中关于所述释放的内存单元的使用状态,并判断与所述释放的内存单元对应于第i级的同一内存单元的相邻内存单元是否为未使用状态;如果所述相邻内存单元为未使用状态,则更新所述释放的内存单元所对应的第i级内存管理表中的内存单元的状态。结合第一方面,在第一方面的第一种可能实现方式中,所述内存池包括用于视频缓存的内存池,所述方法还包括:根据所述视频中的最小P帧或B帧的大小,确定最小的内存单元的大小;或者,所述第一内存空间的内存池的大小为最大P帧的大小*总帧数;或者所述第一内存空间的内存池的大小为最大P帧的大小*P帧数+最大B帧的大小*B帧数+最大I帧的大小*I帧数;或者根据上层应用定义所述第一内存空间的内存池的大小。第三方面,本专利技术实施例提供了一种内存池的管理装置,所述装置包括:第一内存空间申请单元,用于按照预定的规格申请第一内存空间;内存管理表建立单元,用于对所述第一内存空间建立多个不同级别的内存管理表,并且第i+1级的内存管理表所对应的内存单元由第i级内存管理表所对应的内存单元分割得到;内存单元查找单元,用于接收内存申请的请求,根据请求的第二内存空间的大小,在多个不同级别的内存管理表中查找与请求的第二内存空间的大小匹配的内存单元,其中i为自然数。结合第三方面,在第三方面的第一种可能实现方式中,所述内存管理表建立单元包括:分割子单元,用于将第i级内存管理表中的内存单元,平均分割为两份或者两份以上,将分割后的内存单元作为第i+1级内存管理表所对应的内存单元,其中第i+1级内存管理表与第i级内存管理表为两个级别相邻的内存管理表。结合第二方面,在第二方面的第二种可能实现方式中,所述内存池包括用于视频缓存的内存池,所述装置还包括:内存空间的大小确定单元,用于根据所述视频中的最小P帧或B帧的大小,确定最小的内存单元的大小;或者,所述第一内存空间的内存池的大小为最大P帧或I帧的大小*总帧数;或者所述第一内存空间的内存池的大小为最大P帧的大小*P帧数+最大B帧的大小*B帧数+最大I帧的大小*I帧数;或者根据上层应用定义所述第一内存空间的内存池的大小。结合第三方面,在第三方面的第三种可能实现方式中,所述内存查找单元包括:第二内存空间获取子单元,用于接收内存申请的请求,获取所述内存申请的请求所申请的第二内存空间的大小;内存单元查找子单元,用于根据所述第二内存空间的大小,在多个不同级别的内存管理表中查找内存单元,使查找的内存单元的空间大于或等于所述第二内存空间的大小,并且查找的内存单元的下一级的内存单元小于所述第二内存空间的大小。第四方面,本专利技术实施例提供了一种内存释放装置,所述装置包括:内存管理表获取模块,用于当监测到第一内存空间的内存单元中存储的数据释放时,获取释放的内存单元所对应的第i+1级内存管理表,其中,第一内存空间对应多个不同级别的内存管理表,并且第i+1级的内存管理表所对应的内存单元由第i级内存管理表所对应的内存单元分割得到;使用状态更新单元,用于更新所述第i+1级内存管理表中关于所述释放的内存单元的使用状态,并判断与所述释放的内存单元对应于第i级的同一内存单元的相邻内存单元是否为未使用状态;如果所述相邻内存单元为未使用状态,则更新所述释放的内存单元所对应的第i级内存管理表中的内存单元的状态。结合第四方面,在第四方面的第一种可能实现方式中,所述内存池包括用于视频缓存的内存池,所述装置还包括:内存空间的大小确定模块,用于:根据所述视频中的最小P帧或B帧的大小,确定最小的内存单元的大小;或者,所述第一内存空间的内存池的大小为最大P帧的大小*总帧数;或者所述第一内存空间的内存池的大小为最大P帧的大小*P帧数+最大B帧的大小*B帧数+最大I帧的大小*I帧数;或者根据上层应用定义所述第一内存空间的内存池本文档来自技高网...
一种内存池的管理方法和装置

【技术保护点】
一种内存池的管理方法,其特征在于,所述方法包括:按照预定的规格申请第一内存空间;对所述第一内存空间建立多个不同级别的内存管理表,并且第i+1级的内存管理表所对应的内存单元由第i级内存管理表所对应的内存单元分割得到;接收内存申请的请求,根据请求的第二内存空间的大小,在多个不同级别的内存管理表中查找与请求的第二内存空间的大小匹配的内存单元,其中i为自然数。

【技术特征摘要】
1.一种内存池的管理方法,其特征在于,所述方法包括:按照预定的规格申请第一内存空间;对所述第一内存空间建立多个不同级别的内存管理表,并且第i+1级的内存管理表所对应的内存单元由第i级内存管理表所对应的内存单元分割得到;接收内存申请的请求,根据请求的第二内存空间的大小,在多个不同级别的内存管理表中查找与请求的第二内存空间的大小匹配的内存单元,其中i为自然数。2.根据权利要求1所述方法,其特征在于,所述第i+1级的内存管理表所对应的内存单元由第i级内存管理表所对应的内存单元分割得到的步骤具体为:将第i级内存管理表中的内存单元,平均分割为两份或者两份以上,将分割后的内存单元作为第i+1级内存管理表所对应的内存单元,其中第i+1级内存管理表与第i级内存管理表为两个级别相邻的内存管理表。3.根据权利要求1所述方法,其特征在于,所述内存池包括用于视频缓存的内存池,所述方法还包括:根据所述视频中的最小P帧或B帧的大小,确定最小的内存单元的大小;或者,所述第一内存空间的内存池的大小为最大P帧的大小*总帧数;或者所述第一内存空间的内存池的大小为最大P帧的大小*P帧数+最大B帧的大小*B帧数+最大I帧的大小*I帧数;或者根据上层应用定义所述第一内存空间的内存池的大小。4.根据权利要求1所述方法,其特征在于,所述接收内存申请的请求,根据请求的第二内存空间的大小,在多个不同级别的内存管理表中查找与请求的第二内存空间的大小匹配的内存单元的步骤具体为:接收内存申请的请求,获取所述内存申请的请求所申请的第二内存空间的大小;根据所述第二内存空间的大小,在多个不同级别的内存管理表中查找内存单元,使查找的内存单元的空间大于或等于所述第二内存空间的大小,并且查找的内存单元的下一级的内存单元小于所述第二内存空间的大小。5.一种内存释放方法,其特征在于,所述方法还包括:当监测到第一内存空间的内存单元中存储的数据释放时,获取释放的内存单元所对应的第i+1级内存管理表,其中,第一内存空间对应多个不同级别的内存管理表,并且第i+1级的内存管理表所对应的内存单元由第i级内存管理表所对应的内存单元分割得到,其中i为自然数;更新所述第i+1级内存管理表中关于所述释放的内存单元的使用状态,并判断与所述释放的内存单元对应于第i级的同一内存单元的相邻内存单元是否为未使用状态;如果所述相邻内存单元为未使用状态,则更新所述释放的内存单元所对应的第i级内存管理表中的内存单元的状态。6.根据权利要求5所述方法,其特征在于,所述内存池包括用于视频缓存的内存池,所述方法还包括:根据所述视频中的最小P帧或B帧的大小,确定最小的内存单元的大小;或者,所述第一内存空间的内存池的大小为最大P帧的大小*总帧数;或者所述第一内存空间的内存池的大小为最大P帧的大小*P帧数+最大B帧的大小*B帧数+最大I帧的大小*I帧数;或者根据上层应用定义所述第一内存空间的内存池的大小。7.一种内存池的管理装置,其特征在...

【专利技术属性】
技术研发人员:徐景卫
申请(专利权)人:杭州联吉技术有限公司
类型:发明
国别省市:浙江,33

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

1