视频监控平台系统的内存池结构及实现方法

文档序号:6430860阅读:329来源:国知局
专利名称:视频监控平台系统的内存池结构及实现方法
技术领域
本发明涉及视频监控的技术领域,具体说是一种通过内存池完成了无内存泄露、 无内存碎片、内存错误排查等功能的视频监控平台系统的内存池结构及实现方法。
背景技术
内存池(Memory Pool)是一种内存分配方式。通常我们习惯直接使用new、 malloc等API申请分配内存,这样做的缺点在于由于所申请内存块的大小不定,当频繁使用时会造成大量的内存碎片并进而降低性能。内存池则是在真正使用内存之前,先申请分配一定数量的、大小相等(一般情况下)的内存块留作备用。当有新的内存需求时,就从内存池中分出一部分内存块,若内存块不足则再继续申请新的内存。这样做的一个显著优点是尽量避免了内存碎片,使得内存分配效率得到提升。但是现有技术中的内存池的结构和实现方法中,无法解决内存泄露的问题,而且也不具备内存错误排查的功能,内存分配的效率较低。

发明内容
本发明要解决的技术问题是提供一种通过内存池完成了无内存泄露、无内存碎片、内存错误排查等功能的视频监控平台系统的内存池结构及实现方法。本发明为解决公知技术中存在的技术问题所采取的技术方案是
本发明的视频监控平台系统的内存池结构,其中包括单写多读锁,在写入时不允许其他线程进行读和写,允许多个线程同时访问,在有线程进行读操作的时候不允许写操作;内存单元,进行内存分配和管理的单元;内存栈,由单写多读锁和内存单元构成,封装管理内存单元,提供监视内存块数目、内存分配大小、是否释放内存给系统的各种接口 ;内存注册, 提供内存申请登记机制,申请的内存提供传入说明性文字以表明内存在何处使用;内存池, 对内存栈和内存注册进行封装;内存队列,为动态大小并且有最大限制,采用队列方式,先进先出,内存池中的内容进入到内存队列中;内存队列单元,组成内存队列。本发明的视频监控平台系统的内存池实现方法,有以下步骤
1)预先申请部分固定空间作为可用内存,当申请内存的信号发送至内存单元时,内存单元对可用内存进行分配;
2)内存分配以最小单元的大小开始,并根据需要按照最小单元大小的2的倍数进行递增分配,直至最大单元;
3)判断内存单元内是否还有可用内存,如果仍有可用内存则发送申请内存的信号,如果超出可用内存上限,即可用内存不足时,则向系统提出申请,由系统进行内存调配后再发出申请内存的信号;
4)内存被申请后调用内存池接口释放暂不释放给系统,内存单元放在内存池结构中, 成功可用内存,直到程序结束时调用函数一起释放给系统;5)内存申请超过最大单元,内存单元直接向系统提出申请,并且当释放时直接释放给系统;
内存单元中的内存分配和管理采用栈的方式,即遵循先进后出的原则。本发明具有的优点和积极效果是
本发明的视频监控平台系统的内存池结构实现方法,避免频繁申请和释放内存带来的不稳定性和内存开销,在应用中采用内存池的方式防止内存泄露,对内存空间采用动态申请内存重用机制,防止在使用中产生内存碎片,在内存使用中采用内存注册,时时掌握不同内存块区的使用位置,通过自报警机制,提供内存泄露调试功能。在内存池结构中采用单写多读锁,提高了内存使用的效率。


图1是本发明的视频监控平台系统的内存池结构的示意图2是本发明的视频监控平台系统的内存池结构中管理树的示意图; 图3为本发明的视频监控平台系统的内存池实现方法中内存管理的流程图。
具体实施例方式以下参照附图及实施例对本发明进行详细的说明。图1是本发明的视频监控平台系统的内存池结构的示意图;图2是本发明的视频监控平台系统的内存池结构中管理树的示意图;图3为本发明的视频监控平台系统的内存池实现方法中内存管理的流程图。本发明的视频监控平台系统的内存池结构,其中包括单写多读锁,在写入时不允许其他线程进行读和写,允许多个线程同时访问,在有线程进行读操作的时候不允许写操作,内存池会在多线程中使用,因此用此种方式可以有效地提高效率,其中包括内存池状态检测、内存大小分配时的递归操作都会用到这种锁;内存单元,进行内存分配和管理的单元;内存栈,由单写多读锁和内存单元构成,封装管理内存单元,提供监视内存块数目、内存分配大小、是否释放内存给系统的各种接口 ;内存注册,提供内存申请登记机制,申请的内存提供传入说明性文字以表明内存在何处使用,以便可以更快捷的找到内存泄露的位置; 内存池,对内存栈和内存注册进行封装;内存队列,为动态大小并且有最大限制,采用队列方式,先进先出,这样可以省掉固定大小占用内存过大的情况,内存池中的内容进入到内存队列中;内存队列单元,组成内存队列。内存池使用的是一个树型数据结构进行管理,每一类的内存块组成一个链表,作为树的“右枝”,而右枝的链头又是一个链表,作为树的“左枝”。本发明的视频监控平台系统的内存池实现方法,有以下步骤
1)预先申请部分固定空间作为可用内存,当申请内存的信号发送至内存单元时,内存单元对可用内存进行分配;
2)内存分配以最小单元的大小开始,并根据需要按照最小单元大小的2的倍数进行递增分配,直至最大单元;
3)判断内存单元内是否还有可用内存,如果仍有可用内存则发送申请内存的信号,如果超出可用内存上限,即可用内存不足时,则向系统提出申请,由系统进行内存调配后再发
4出申请内存的信号;
4)内存被申请后调用内存池接口释放暂不释放给系统,内存单元放在内存池结构中, 成功可用内存,直到程序结束时调用函数一起释放给系统;
5)内存申请超过最大单元,内存单元直接向系统提出申请,并且当释放时直接释放给系统;
内存单元中的内存分配和管理采用栈的方式,即遵循先进后出的原则。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制, 虽然本发明已以较佳实施例公开如上,然而,并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当然会利用揭示的技术内容作出些许更动或修饰,成为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均属于本发明技术方案的范围内。
权利要求
1.一种视频监控平台系统的内存池结构,其特征在于,包括单写多读锁,在写入时不允许其他线程进行读和写,允许多个线程同时访问,在有线程进行读操作的时候不允许写操作;内存单元,进行内存分配和管理的单元;内存栈,由单写多读锁和内存单元构成,封装管理内存单元,提供监视内存块数目、内存分配大小、是否释放内存给系统的各种接口 ; 内存注册,提供内存申请登记机制,申请的内存提供传入说明性文字以表明内存在何处使用;内存池,对内存栈和内存注册进行封装;内存队列,为动态大小并且有最大限制,采用队列方式,先进先出,内存池中的内容进入到内存队列中;内存队列单元,组成内存队列。
2.一种基于权利要求1所述内存池结构的视频监控平台系统的内存池实现方法,有以下步骤1)预先申请部分固定空间作为可用内存,当申请内存的信号发送至内存单元时,内存单元对可用内存进行分配;2)内存分配以最小单元的大小开始,并根据需要按照最小单元大小的2的倍数进行递增分配,直至最大单元;3)判断内存单元内是否还有可用内存,如果仍有可用内存则发送申请内存的信号,如果超出可用内存上限,即可用内存不足时,则向系统提出申请,由系统进行内存调配后再发出申请内存的信号;4)内存被申请后调用内存池接口释放暂不释放给系统,内存单元放在内存池结构中, 成功可用内存,直到程序结束时调用函数一起释放给系统;5)内存申请超过最大单元,内存单元直接向系统提出申请,并且当释放时直接释放给系统。
3.根据权利要求2所述的视频监控平台系统的内存池实现方法,其特征在于内存单元中的内存分配和管理采用栈的方式,即遵循先进后出的原则。
全文摘要
本发明的视频监控平台系统的内存池结构及实现方法中,包括单写多读锁、内存单元、内存栈、内存注册、内存池、内存队列、内存队列单元,避免频繁申请和释放内存带来的不稳定性和内存开销,在应用中采用内存池的方式防止内存泄露,对内存空间采用动态申请内存重用机制,防止在使用中产生内存碎片,在内存使用中采用内存注册,时时掌握不同内存块区的使用位置,通过自报警机制,提供内存泄露调试功能。在内存池结构中采用单写多读锁,提高了内存使用的效率。
文档编号G06F12/02GK102279804SQ20111023429
公开日2011年12月14日 申请日期2011年8月16日 优先权日2011年8月16日
发明者于新强, 谢晓霞, 黄博 申请人:天津市天祥世联网络科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1