CN102279804A - 视频监控平台系统的内存池结构及实现方法 - Google Patents
视频监控平台系统的内存池结构及实现方法 Download PDFInfo
- Publication number
- CN102279804A CN102279804A CN201110234296XA CN201110234296A CN102279804A CN 102279804 A CN102279804 A CN 102279804A CN 201110234296X A CN201110234296X A CN 201110234296XA CN 201110234296 A CN201110234296 A CN 201110234296A CN 102279804 A CN102279804 A CN 102279804A
- Authority
- CN
- China
- Prior art keywords
- memory
- internal
- storage location
- application
- pool structure
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明的视频监控平台系统的内存池结构及实现方法中,包括:单写多读锁、内存单元、内存栈、内存注册、内存池、内存队列、内存队列单元,避免频繁申请和释放内存带来的不稳定性和内存开销,在应用中采用内存池的方式防止内存泄露,对内存空间采用动态申请内存重用机制,防止在使用中产生内存碎片,在内存使用中采用内存注册,时时掌握不同内存块区的使用位置,通过自报警机制,提供内存泄露调试功能。在内存池结构中采用单写多读锁,提高了内存使用的效率。
Description
技术领域
本发明涉及视频监控的技术领域,具体说是一种通过内存池完成了无内存泄露、无内存碎片、内存错误排查等功能的视频监控平台系统的内存池结构及实现方法。
背景技术
内存池(Memory Pool)是一种内存分配方式。 通常我们习惯直接使用new、malloc等API申请分配内存,这样做的缺点在于:由于所申请内存块的大小不定,当频繁使用时会造成大量的内存碎片并进而降低性能。
内存池则是在真正使用内存之前,先申请分配一定数量的、大小相等(一般情况下)的内存块留作备用。当有新的内存需求时,就从内存池中分出一部分内存块,若内存块不足则再继续申请新的内存。这样做的一个显著优点是尽量避免了内存碎片,使得内存分配效率得到提升。
但是现有技术中的内存池的结构和实现方法中,无法解决内存泄露的问题,而且也不具备内存错误排查的功能,内存分配的效率较低。
发明内容
本发明要解决的技术问题是提供一种通过内存池完成了无内存泄露、无内存碎片、内存错误排查等功能的视频监控平台系统的内存池结构及实现方法。
本发明为解决公知技术中存在的技术问题所采取的技术方案是:
本发明的视频监控平台系统的内存池结构,其中包括:单写多读锁,在写入时不允许其他线程进行读和写,允许多个线程同时访问,在有线程进行读操作的时候不允许写操作;内存单元,进行内存分配和管理的单元;内存栈,由单写多读锁和内存单元构成,封装管理内存单元,提供监视内存块数目、内存分配大小、是否释放内存给系统的各种接口;内存注册,提供内存申请登记机制,申请的内存提供传入说明性文字以表明内存在何处使用;内存池,对内存栈和内存注册进行封装;内存队列,为动态大小并且有最大限制,采用队列方式,先进先出,内存池中的内容进入到内存队列中;内存队列单元,组成内存队列。
本发明的视频监控平台系统的内存池实现方法,有以下步骤:
1)预先申请部分固定空间作为可用内存,当申请内存的信号发送至内存单元时,内存单元对可用内存进行分配;
2)内存分配以最小单元的大小开始,并根据需要按照最小单元大小的2的倍数进行递增分配,直至最大单元;
3)判断内存单元内是否还有可用内存,如果仍有可用内存则发送申请内存的信号,如果超出可用内存上限,即可用内存不足时,则向系统提出申请,由系统进行内存调配后再发出申请内存的信号;
4)内存被申请后调用内存池接口释放暂不释放给系统,内存单元放在内存池结构中,成功可用内存,直到程序结束时调用函数一起释放给系统;
5)内存申请超过最大单元,内存单元直接向系统提出申请,并且当释放时直接释放给系统;
内存单元中的内存分配和管理采用栈的方式,即遵循先进后出的原则。
本发明具有的优点和积极效果是:
本发明的视频监控平台系统的内存池结构实现方法,避免频繁申请和释放内存带来的不稳定性和内存开销,在应用中采用内存池的方式防止内存泄露,对内存空间采用动态申请内存重用机制,防止在使用中产生内存碎片,在内存使用中采用内存注册,时时掌握不同内存块区的使用位置,通过自报警机制,提供内存泄露调试功能。在内存池结构中采用单写多读锁,提高了内存使用的效率。
附图说明
图1是本发明的视频监控平台系统的内存池结构的示意图;
图2是本发明的视频监控平台系统的内存池结构中管理树的示意图;
图3为本发明的视频监控平台系统的内存池实现方法中内存管理的流程图。
具体实施方式
以下参照附图及实施例对本发明进行详细的说明。
图1是本发明的视频监控平台系统的内存池结构的示意图;图2是本发明的视频监控平台系统的内存池结构中管理树的示意图;图3为本发明的视频监控平台系统的内存池实现方法中内存管理的流程图。
本发明的视频监控平台系统的内存池结构,其中包括:单写多读锁,在写入时不允许其他线程进行读和写,允许多个线程同时访问,在有线程进行读操作的时候不允许写操作,内存池会在多线程中使用,因此用此种方式可以有效地提高效率,其中包括内存池状态检测、内存大小分配时的递归操作都会用到这种锁;内存单元,进行内存分配和管理的单元;内存栈,由单写多读锁和内存单元构成,封装管理内存单元,提供监视内存块数目、内存分配大小、是否释放内存给系统的各种接口;内存注册,提供内存申请登记机制,申请的内存提供传入说明性文字以表明内存在何处使用,以便可以更快捷的找到内存泄露的位置;内存池,对内存栈和内存注册进行封装;内存队列,为动态大小并且有最大限制,采用队列方式,先进先出,这样可以省掉固定大小占用内存过大的情况,内存池中的内容进入到内存队列中;内存队列单元,组成内存队列。
内存池使用的是一个树型数据结构进行管理,每一类的内存块组成一个链表,作为树的“右枝”,而右枝的链头又是一个链表,作为树的“左枝”。
本发明的视频监控平台系统的内存池实现方法,有以下步骤:
1)预先申请部分固定空间作为可用内存,当申请内存的信号发送至内存单元时,内存单元对可用内存进行分配;
2)内存分配以最小单元的大小开始,并根据需要按照最小单元大小的2的倍数进行递增分配,直至最大单元;
3)判断内存单元内是否还有可用内存,如果仍有可用内存则发送申请内存的信号,如果超出可用内存上限,即可用内存不足时,则向系统提出申请,由系统进行内存调配后再发出申请内存的信号;
4)内存被申请后调用内存池接口释放暂不释放给系统,内存单元放在内存池结构中,成功可用内存,直到程序结束时调用函数一起释放给系统;
5)内存申请超过最大单元,内存单元直接向系统提出申请,并且当释放时直接释放给系统;
内存单元中的内存分配和管理采用栈的方式,即遵循先进后出的原则。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例公开如上,然而,并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当然会利用揭示的技术内容作出些许更动或修饰,成为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均属于本发明技术方案的范围内。
Claims (3)
1.一种视频监控平台系统的内存池结构,其特征在于,包括:单写多读锁,在写入时不允许其他线程进行读和写,允许多个线程同时访问,在有线程进行读操作的时候不允许写操作;内存单元,进行内存分配和管理的单元;内存栈,由单写多读锁和内存单元构成,封装管理内存单元,提供监视内存块数目、内存分配大小、是否释放内存给系统的各种接口;内存注册,提供内存申请登记机制,申请的内存提供传入说明性文字以表明内存在何处使用;内存池,对内存栈和内存注册进行封装;内存队列,为动态大小并且有最大限制,采用队列方式,先进先出,内存池中的内容进入到内存队列中;内存队列单元,组成内存队列。
2.一种基于权利要求1所述内存池结构的视频监控平台系统的内存池实现方法,有以下步骤:
1)预先申请部分固定空间作为可用内存,当申请内存的信号发送至内存单元时,内存单元对可用内存进行分配;
2)内存分配以最小单元的大小开始,并根据需要按照最小单元大小的2的倍数进行递增分配,直至最大单元;
3)判断内存单元内是否还有可用内存,如果仍有可用内存则发送申请内存的信号,如果超出可用内存上限,即可用内存不足时,则向系统提出申请,由系统进行内存调配后再发出申请内存的信号;
4)内存被申请后调用内存池接口释放暂不释放给系统,内存单元放在内存池结构中,成功可用内存,直到程序结束时调用函数一起释放给系统;
5)内存申请超过最大单元,内存单元直接向系统提出申请,并且当释放时直接释放给系统。
3.根据权利要求2所述的视频监控平台系统的内存池实现方法,其特征在于:内存单元中的内存分配和管理采用栈的方式,即遵循先进后出的原则。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110234296XA CN102279804A (zh) | 2011-08-16 | 2011-08-16 | 视频监控平台系统的内存池结构及实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110234296XA CN102279804A (zh) | 2011-08-16 | 2011-08-16 | 视频监控平台系统的内存池结构及实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102279804A true CN102279804A (zh) | 2011-12-14 |
Family
ID=45105264
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110234296XA Pending CN102279804A (zh) | 2011-08-16 | 2011-08-16 | 视频监控平台系统的内存池结构及实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102279804A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103761192A (zh) * | 2014-01-20 | 2014-04-30 | 华为技术有限公司 | 一种内存分配的方法和装置 |
CN104133782A (zh) * | 2014-07-04 | 2014-11-05 | 深圳英飞拓科技股份有限公司 | 一种数字监控平台内存自适应管理方法及装置 |
WO2017028399A1 (zh) * | 2015-08-18 | 2017-02-23 | 北京百度网讯科技有限公司 | 通信数据传输方法及系统 |
CN111858290A (zh) * | 2019-04-30 | 2020-10-30 | 深圳市前海源伞科技有限公司 | 用于检测目标代码的内存泄漏路径的方法和设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1195144A (zh) * | 1997-03-27 | 1998-10-07 | 国际商业机器公司 | 框架环境中工具数据对象的锁定 |
WO2002008908A2 (en) * | 2000-07-24 | 2002-01-31 | Sun Microsystems, Inc. | A method for scalable memory efficient thread-local object allocation |
CN1527206A (zh) * | 2003-03-03 | 2004-09-08 | 华为技术有限公司 | 一种内存池管理的方法 |
CN1635482A (zh) * | 2003-12-29 | 2005-07-06 | 北京中视联数字系统有限公司 | 一种嵌入式系统内存管理的方法 |
CN101093455A (zh) * | 2006-06-21 | 2007-12-26 | 中兴通讯股份有限公司 | 一种嵌入式操作系统的内存池分配方法 |
CN101673246A (zh) * | 2009-08-06 | 2010-03-17 | 深圳市融创天下科技发展有限公司 | 一种高效的先进先出数据池读写方法 |
-
2011
- 2011-08-16 CN CN201110234296XA patent/CN102279804A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1195144A (zh) * | 1997-03-27 | 1998-10-07 | 国际商业机器公司 | 框架环境中工具数据对象的锁定 |
WO2002008908A2 (en) * | 2000-07-24 | 2002-01-31 | Sun Microsystems, Inc. | A method for scalable memory efficient thread-local object allocation |
CN1527206A (zh) * | 2003-03-03 | 2004-09-08 | 华为技术有限公司 | 一种内存池管理的方法 |
CN1635482A (zh) * | 2003-12-29 | 2005-07-06 | 北京中视联数字系统有限公司 | 一种嵌入式系统内存管理的方法 |
CN101093455A (zh) * | 2006-06-21 | 2007-12-26 | 中兴通讯股份有限公司 | 一种嵌入式操作系统的内存池分配方法 |
CN101673246A (zh) * | 2009-08-06 | 2010-03-17 | 深圳市融创天下科技发展有限公司 | 一种高效的先进先出数据池读写方法 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103761192A (zh) * | 2014-01-20 | 2014-04-30 | 华为技术有限公司 | 一种内存分配的方法和装置 |
CN103761192B (zh) * | 2014-01-20 | 2016-08-17 | 华为技术有限公司 | 一种内存分配的方法和装置 |
CN104133782A (zh) * | 2014-07-04 | 2014-11-05 | 深圳英飞拓科技股份有限公司 | 一种数字监控平台内存自适应管理方法及装置 |
CN104133782B (zh) * | 2014-07-04 | 2017-08-22 | 深圳英飞拓科技股份有限公司 | 一种数字监控平台内存自适应管理方法及装置 |
WO2017028399A1 (zh) * | 2015-08-18 | 2017-02-23 | 北京百度网讯科技有限公司 | 通信数据传输方法及系统 |
US10609125B2 (en) | 2015-08-18 | 2020-03-31 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Method and system for transmitting communication data |
CN111858290A (zh) * | 2019-04-30 | 2020-10-30 | 深圳市前海源伞科技有限公司 | 用于检测目标代码的内存泄漏路径的方法和设备 |
CN111858290B (zh) * | 2019-04-30 | 2024-02-06 | 深圳市前海源伞科技有限公司 | 用于检测目标代码的内存泄漏路径的方法和设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102156675B (zh) | 一种内存分配方法及装置 | |
CN110737534B (zh) | 任务的处理方法、装置和服务器 | |
CN105260314B (zh) | 内存泄漏的监测方法 | |
CN101127685B (zh) | 一种进程间通讯装置及其进程间通讯方法 | |
CN102402487B (zh) | 一种零拷贝接收报文的方法和系统 | |
CN103425592B (zh) | 一种多进程系统中的内存管理方法及装置 | |
CN102279804A (zh) | 视频监控平台系统的内存池结构及实现方法 | |
CN102331950B (zh) | 基于Linux操作系统定时任务的守护进程实现方法和系统 | |
CN101403982A (zh) | 一种多核处理器的任务分配方法、系统及设备 | |
CN107209716A (zh) | 内存管理装置和方法 | |
CN108173842A (zh) | 基于openstack云平台的软件定义防火墙的部署优化方法 | |
CN102455976B (zh) | 一种中间件内存管理的方法 | |
ATE520080T1 (de) | Speicherverwaltung | |
CN105183549A (zh) | 基于任务分配的自动出票系统 | |
CN104123194A (zh) | 内核态与用户态的通信结构及通信方法 | |
CN104881324A (zh) | 一种多线程下的内存管理方法 | |
CN103455433B (zh) | 内存管理方法及系统 | |
CN107469352B (zh) | 游戏前端的资源缓存方法、存储介质 | |
CN108153596A (zh) | 一种基于无锁队列的消息处理方法和装置 | |
CN102404253B (zh) | 支持linux 的硬件抽象层的虚拟网卡设计方法 | |
CN105468429A (zh) | 一种高效虚拟化集群管理方法和集群节点 | |
CN104216829A (zh) | 一种嵌入式模块并发测试的方法及系统 | |
CN101826055B (zh) | 一种用于Linux系统数据缓存分配的管理方法 | |
CN103019819A (zh) | 一种基于插件机制的动态库统一调度方法 | |
CN101976224B (zh) | 一种嵌入式系统的内存管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20111214 |