CN1979426A - 嵌入式系统中自动监测内存泄漏与内存越界的系统 - Google Patents
嵌入式系统中自动监测内存泄漏与内存越界的系统 Download PDFInfo
- Publication number
- CN1979426A CN1979426A CN 200510130085 CN200510130085A CN1979426A CN 1979426 A CN1979426 A CN 1979426A CN 200510130085 CN200510130085 CN 200510130085 CN 200510130085 A CN200510130085 A CN 200510130085A CN 1979426 A CN1979426 A CN 1979426A
- Authority
- CN
- China
- Prior art keywords
- memory
- unit
- internal memory
- overwriting
- module
- 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.)
- Granted
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种嵌入式系统中自动监测内存泄漏与内存越界的系统,包括:内存申请单元、内存释放单元、模块状态感知单元、管理配置单元以及泄漏内存释放单元,其中:所述的模块状态感知单元与所述的内存申请单元、内存释放单元以及泄漏内存释放单元连接,触发上述单元对内存进行操作;所述的管理配置单元与所述的内存申请单元、内存释放单元以及泄漏内存释放单元连接;所述的报警单元与所述的内存释放单元和泄漏内存释放单元连接。本发明提出的系统使得嵌入式系统中不恰当的内存操作能够及时发现,有利于嵌入式系统中有限内存的效率使用。
Description
技术领域
本发明涉及一种嵌入式系统中自动监测内存泄漏与内存越界的系统,属于计算机技术领域。
背景技术
嵌入式系统是一种资源比较受限的系统,资源要比桌面PC更为宝贵,因而内存有效使用的重要性勿庸置疑。如何利用好有限的内存发挥最大效能,就成了嵌入式系统进一步发展的问题关键。
然而,不恰当的内存操作通常阻碍了内存的使用,如:“内存泄漏”,也即不能正确地释放已分配的动态内存,就是一种非常难于检测的内存错误,持续的内存泄漏会使程序性能下降到最终完全不能运行,进而影响到所有其它有动态内存需求的程序,在某些相对简单的嵌入式平台上甚至会妨碍操作系统的运转;又如“内存越界”,一种不合法的内存操作,极可能破坏到本程序中正在使用的其它数据,严重的时候还可能对其它正在运行的程序甚至整个系统造成影响。
因此如何有效地监测内存泄漏与内存越界是亟待解决的一个问题。
发明内容
本发明要解决的技术问题是:提出一种能够自动监测内存泄漏与内存越界的系统,使得嵌入式系统中不恰当的内存操作能够及时发现,有利于嵌入式系统中有限内存的效率使用。
本发明是通过下述技术手段来实现的:
一种嵌入式系统中自动监测内存泄漏与内存越界的系统,包括:内存申请单元、内存释放单元、模块状态感知单元、管理配置单元以及泄漏内存释放单元,其中:
所述的内存申请单元,用于内存申请过程操作;
所述的内存释放单元,用于内存释放过程操作;
所述的模块状态感知单元,用于接收应用程序模块的各种运行状态信息,并与所述的内存申请单元、内存释放单元以及泄漏内存释放单元连接,触发上述单元对内存进行操作;
所述的管理配置单元,用于建立和实时更新保存模块的标识、模块使用内存情况以及模块分配内存地址的内存索引,与所述的内存申请单元、内存释放单元以及泄漏内存释放单元连接;
所述的泄漏内存释放单元,用于判断是否存在泄漏内存并释放泄漏内存;
所述的报警单元,用于进行内存泄漏与内存越界地报警,与所述的内存释放单元和泄漏内存释放单元连接。
进一步地,所述的模块状态感知单元进一步地包括:
用于接收应用程序模块进入信息,并触发内存申请单元对内存操作的模块调用感知单元;
用于接收应用程序模块结束信息,并触发内存释放单元对内存操作的操作结束感知单元;
用于接收应用程序模块退出信息,并触发泄漏内存释放单元对内存操作的模块退出感知单元。
进一步地,所述的内存越界是这样判断的:所述的内存释放单元要释放的内存与申请内存不一致,表明内存越界。
进一步地,所述的内存泄漏是这样判断的:所述的泄漏内存释放单元判断应用程序模块是否存在对应的非空内存索引项,如果有,表明存在内存泄漏。
进一步地,所述的内存索引为数组,数组大小为应用程序模块的最大使用值。
进一步地,所述的内存索引为动态链表形式,在内存申请时自动添加。
进一步地,所述的申请内存的大小为:应用程序模块运行所需内存与内存地址指针长度之和。
更进一步地,所述的内存地址指针长度为4。
进一步地,所述的释放内存大小为:释放内存块与内存地址指针长度之和。
更进一步地,所述的内存地址指针长度为4。
本发明所提出的自动监测内存泄漏与内存越界的系统及方法,使得嵌入式系统中不恰当的内存操作能够及时发现,有利于嵌入式系统中有限内存的效率使用。
附图说明
图1为本发明具体实施例中自动监测内存泄漏与内存越界系统的结构框图;
图2为本发明实施例中自动监测内存泄漏与内存越界系统的方法的实现流程图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步的介绍,但不作为对本发明的限定。
一种自动监测内存泄漏与内存越界系统,包括模块调用感知单元1、管理配置单元2、内存申请单元3、操作结束感知单元4、内存释放单元5、模块退出感知单元6、报警单元7、泄漏内存释放单元8,其中:
模块调用感知单元1,用于接收应用程序模块的进入信息;
管理配置单元2,用于建立保存模块的标识,模块使用内存情况的模块内存控制区,以及建立模块分配内存地址的内存索引区,并且在模块内存控制区和内存索引区内实时记录应用程序模块对内存的使用情况;
内存申请单元3,用于内存申请过程操作;
操作结束感知单元4,用于接收应用程序模块的结束信息;
内存释放单元5,用于内存释放过程操作;
模块退出感知单元6,用于接收应用程序模块的退出信息;
报警单元7,与内存释放单元5以及泄漏内存释放单元8连接,用于发出报警提示;
泄漏内存释放单元8,用于判断是否存在泄漏内存并释放泄漏内存。
在上述单元中,内存申请单元3、内存释放单元5和泄漏内存释放单元8是应用程序模块运行过程中访问内存的接口。
以应用程序模块M启动为例,对本系统的工作过程介绍如下:
步骤101:模块调用感知单元1检测到应用模块M启动,管理配置单元2建立一个保存模块M的标识,模块M的使用内存情况的模块内存控制区,还建立一个保存模块分配内存地址的内存索引区,该区域包括多个内存索引项,每一个内存索引项指向一个内存地址,初始状态时,内存索引项均置为空闲并且在模块内存控制区和内存索引区内实时记录应用程序模块对内存的使用情况;
内存索引区可以是数组,数组的大小根据模块M对内存的使用情况确定一个合理的最大值;也可以是链表的形式,在模块M申请内存的时候动态的添加。
步骤102:内存申请单元3在模块M的管理配置单元2的内存索引区中查找一个空闲的内存索引项S1,该内存索引项S1指向的内存索引地址为DS1;通过系统提供的内存分配函数申请大小为Size+Head的一个内存块D1,其中Head的大小为内存地址指针的长度,一般为4,该内存块D1对应的内存索引地址为DS1。
此时,管理配置单元2在模块内存控制区中对应记录模块M对内存的使用情况,包括:使用地址、占用内存块大小。
步骤103:操作结束感知单元4接收到应用程序模块M的结束操作信息,向内存释放单元5发送释放该应用程序模块M申请的内存的触发信号;
步骤104:内存释放单元5读取内存索引地址DS1,比较该地址处的内存块P-Head的大小是否等于内存块D1的大小,如果是,则释放该内存块,设置DS1的内容为空;如果否,说明需要释放的内存P地址是错误的或者是该内存块遭到破坏,将该信息传递给报警单元7,进行内存越界报警;
步骤105:模块退出感知单元6接收到应用程序模块M的退出信息,向泄漏内存释放单元8发送释放泄漏内存的触发信号;
步骤106:泄漏内存释放单元8查找应用程序模块M对应的所有内存索引项,如果有某个内存索引项不为空,说明该应用程序模块M有内存泄漏,进行内存泄漏报警,并报告内存泄漏地址。
当出现内存越界报警或者内存泄漏报警后,可以由其他程序或用户来判断是否对错误报警作出处理,由此实现对内存更加可靠的操作。防止了为满足某种特殊要求而设计不释放某些内存时,误认为内存操作错误自动修复错误的发生。
Claims (10)
1、一种嵌入式系统中自动监测内存泄漏与内存越界的系统,包括:包括:用于内存申请过程操作的内存申请单元、用于内存释放过程操作的内存释放单元,其特征在于,该系统还包括:模块状态感知单元、管理配置单元、泄漏内存释放单元以及报警单元,其中:
所述的模块状态感知单元,用于接收应用程序模块的各种运行状态信息,并与所述的内存申请单元、内存释放单元以及泄漏内存释放单元连接,触发上述单元对内存进行操作;
所述的管理配置单元,用于建立和实时更新保存模块的标识、模块使用内存情况以及模块分配内存地址的内存索引;与所述的内存申请单元、内存释放单元以及泄漏内存释放单元连接;
所述的泄漏内存释放单元,用于判断是否存在泄漏内存并释放泄漏内存;
所述的报警单元,用于进行内存越界与内存泄漏报警,与所述的内存释放单元和泄漏内存释放单元连接。
2、如权利要求1所述的一种嵌入式系统中自动监测内存泄漏与内存越界的系统,其特征在于,所述的模块状态感知单元进一步地包括:
用于接收应用程序模块进入信息,并触发内存申请单元对内存操作的模块调用感知单元;
用于接收应用程序模块结束信息,并触发内存释放单元对内存操作的操作结束感知单元;
用于接收应用程序模块退出信息,并触发泄漏内存释放单元对内存操作的模块退出感知单元。
3、如权利要求1所述的一种嵌入式系统中自动监测内存泄漏与内存越界的系统,其特征在于,所述的内存越界是这样判断的:所述的内存释放单元要释放的内存与申请内存不一致,表明内存越界。
4、如权利要求1所述的一种嵌入式系统中自动监测内存泄漏与内存越界的系统,其特征在于,所述的内存泄漏是这样判断的:所述的泄漏内存释放单元判断应用程序模块是否存在对应的非空内存索引项,如果有,表明存在内存泄漏。
5、如权利要求1所述的一种嵌入式系统中自动监测内存泄漏与内存越界的系统,其特征在于:所述的内存索引为数组,数组大小为应用程序模块的最大使用值。
6、如权利要求1所述的一种嵌入式系统中自动监测内存泄漏与内存越界的系统,其特征在于:所述的内存索引为动态链表形式,在内存申请时自动添加。
7、如权利要求1所述的一种嵌入式系统中自动监测内存泄漏与内存越界的系统,其特征在于:所述的申请内存的大小为:应用程序模块运行所需内存与内存地址指针长度之和。
8、如权利要求7所述的一种嵌入式系统中自动监测内存泄漏与内存越界的系统,其特征在于:所述的内存地址指针长度为4。
9、如权利要求1所述的一种嵌入式系统中自动监测内存泄漏与内存越界的系统,其特征在于:所述的释放内存大小为:释放内存块与内存地址指针长度之和。
10、如权利要求9所述的一种嵌入式系统中自动监测内存泄漏与内存越界的系统,其特征在于:所述的内存地址指针长度为4。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005101300856A CN100530110C (zh) | 2005-12-08 | 2005-12-08 | 嵌入式系统中自动监测内存泄漏与内存越界的系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005101300856A CN100530110C (zh) | 2005-12-08 | 2005-12-08 | 嵌入式系统中自动监测内存泄漏与内存越界的系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1979426A true CN1979426A (zh) | 2007-06-13 |
CN100530110C CN100530110C (zh) | 2009-08-19 |
Family
ID=38130604
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005101300856A Expired - Fee Related CN100530110C (zh) | 2005-12-08 | 2005-12-08 | 嵌入式系统中自动监测内存泄漏与内存越界的系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100530110C (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010043176A1 (zh) * | 2008-10-17 | 2010-04-22 | 华为技术有限公司 | 内存泄漏的检测方法和装置 |
CN101344861B (zh) * | 2007-07-10 | 2012-12-05 | 锐迪科微电子(上海)有限公司 | 一种智能卡内存管理方法 |
CN103123604A (zh) * | 2011-11-18 | 2013-05-29 | 苹果公司 | 跟踪数据处理系统的内存使用的方法 |
CN109343953A (zh) * | 2018-08-29 | 2019-02-15 | 苏州科达科技股份有限公司 | 内存管理方法、装置及电子设备 |
CN112559184A (zh) * | 2020-12-17 | 2021-03-26 | 成都思酷智能科技有限公司 | 一种云桌面动态分配内存的方法及装置 |
-
2005
- 2005-12-08 CN CNB2005101300856A patent/CN100530110C/zh not_active Expired - Fee Related
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101344861B (zh) * | 2007-07-10 | 2012-12-05 | 锐迪科微电子(上海)有限公司 | 一种智能卡内存管理方法 |
WO2010043176A1 (zh) * | 2008-10-17 | 2010-04-22 | 华为技术有限公司 | 内存泄漏的检测方法和装置 |
CN103123604A (zh) * | 2011-11-18 | 2013-05-29 | 苹果公司 | 跟踪数据处理系统的内存使用的方法 |
CN109343953A (zh) * | 2018-08-29 | 2019-02-15 | 苏州科达科技股份有限公司 | 内存管理方法、装置及电子设备 |
CN112559184A (zh) * | 2020-12-17 | 2021-03-26 | 成都思酷智能科技有限公司 | 一种云桌面动态分配内存的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN100530110C (zh) | 2009-08-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101154180B (zh) | 一种任务栈溢出的监测方法 | |
CN100530110C (zh) | 嵌入式系统中自动监测内存泄漏与内存越界的系统 | |
CN100472459C (zh) | 自动释放嵌入式系统中应用程序模块泄漏内存的系统 | |
CN100487690C (zh) | 自主记日志支持 | |
GB2383857A (en) | Detecting unbounded growth of linked lists | |
CN106919454B (zh) | 基于lte协议栈的内存池问题定位方法及其系统 | |
CN102117240B (zh) | 一种获取进程阻塞信息的方法及装置 | |
CN100479375C (zh) | 数据设备状态信息的显示系统及方法 | |
EP2466943B1 (en) | Method and device for monitoring running state of card | |
CN106371974A (zh) | Docker容器内应用程序的监控方法和发布平台 | |
CN101334778A (zh) | 管理数据库连接的方法和系统 | |
CN104951395A (zh) | 一种嵌入式系统调试信息处理方法及装置 | |
CN101431763A (zh) | 利用中断实现基站掉电告警的方法及装置 | |
CN110750372B (zh) | 基于共享内存的日志系统及日志管理方法 | |
CN100392606C (zh) | 一种定位虚拟操作系统内存泄漏的方法 | |
CN103927305A (zh) | 一种对内存溢出进行控制的方法和设备 | |
CN100487657C (zh) | 嵌入式系统中自动监测内存泄漏与内存越界的方法 | |
CN101625659A (zh) | 嵌入式系统实时监控内存的方法 | |
CN103024058A (zh) | Web服务调用方法及系统 | |
CN104951370A (zh) | 一种内存管理方法及装置 | |
CN101515242A (zh) | 一种查找改写内存的任务的方法和系统 | |
CN109933435B (zh) | 控制方法、装置及计算机设备 | |
CN101131657A (zh) | 一种辅助cpu对芯片进行驱动的系统及方法 | |
WO2021258696A1 (zh) | 通信数据处理方法、装置、计算机设备和存储介质 | |
CN104506939A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090819 Termination date: 20141208 |
|
EXPY | Termination of patent right or utility model |