嵌入式系统中自动监测内存泄漏与内存越界的系统

阅读: 评论:0

著录项
  • CN200510130085.6
  • 20051208
  • CN1979426
  • 20070613
  • 中兴通讯股份有限公司
  • 蒋敏
  • G06F9/50(2006.01)I
  • G06F9/50(2006.01)I G06F12/02(2006.01)I

  • 广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦法律部
  • 中国,CN,广东(44)
  • 北京安信方达知识产权代理有限公司
  • 许志勇;颜涛
摘要
本发明公开了一种嵌入式系统中自动监测内存泄漏与内存越界的系统,包括:内存申请单元、内存释放单元、模块状态感知单元、管理配置单元以及泄漏内存释放单元,其中:所述的模块状态感知单元与所述的内存申请单元、内存释放单元以及泄漏内存释放单元连接,触发上述单元对内存进行操作;所述的管理配置单元与所述的内存申请单元、内存释放单元以及泄漏内存释放单元连接;所述的报警单元与所述的内存释放单元和泄漏内存释放单元连接。本发明提出的系统使得嵌入式系统中不恰当的内存操作能够及时发现,有利于嵌入式系统中有限内存的效率使用。
权利要求

1、一种嵌入式系统中自动监测内存泄漏与内存越界的系统,包括:包 括:用于内存申请过程操作的内存申请单元、用于内存释放过程操作的内存 释放单元,其特征在于,该系统还包括:模块状态感知单元、管理配置单元、 泄漏内存释放单元以及报警单元,其中:

所述的模块状态感知单元,用于接收应用程序模块的各种运行状态信 息,并与所述的内存申请单元、内存释放单元以及泄漏内存释放单元连接, 触发上述单元对内存进行操作;

所述的管理配置单元,用于建立和实时更新保存模块的标识、模块使用 内存情况以及模块分配内存地址的内存索引;与所述的内存申请单元、内存 释放单元以及泄漏内存释放单元连接;

所述的泄漏内存释放单元,用于判断是否存在泄漏内存并释放泄漏内 存;

所述的报警单元,用于进行内存越界与内存泄漏报警,与所述的内存释 放单元和泄漏内存释放单元连接。

2、如权利要求1所述的一种嵌入式系统中自动监测内存泄漏与内存越 界的系统,其特征在于,所述的模块状态感知单元进一步地包括:

用于接收应用程序模块进入信息,并触发内存申请单元对内存操作的模 块调用感知单元;

用于接收应用程序模块结束信息,并触发内存释放单元对内存操作的操 作结束感知单元;

用于接收应用程序模块退出信息,并触发泄漏内存释放单元对内存操作 的模块退出感知单元。

3、如权利要求1所述的一种嵌入式系统中自动监测内存泄漏与内存越 界的系统,其特征在于,所述的内存越界是这样判断的:所述的内存释放单 元要释放的内存与申请内存不一致,表明内存越界。

4、如权利要求1所述的一种嵌入式系统中自动监测内存泄漏与内存越 界的系统,其特征在于,所述的内存泄漏是这样判断的:所述的泄漏内存释 放单元判断应用程序模块是否存在对应的非空内存索引项,如果有,表明存 在内存泄漏。

5、如权利要求1所述的一种嵌入式系统中自动监测内存泄漏与内存越 界的系统,其特征在于:所述的内存索引为数组,数组大小为应用程序模块 的最大使用值。

6、如权利要求1所述的一种嵌入式系统中自动监测内存泄漏与内存越 界的系统,其特征在于:所述的内存索引为动态链表形式,在内存申请时自 动添加。

7、如权利要求1所述的一种嵌入式系统中自动监测内存泄漏与内存越 界的系统,其特征在于:所述的申请内存的大小为:应用程序模块运行所需 内存与内存地址指针长度之和。

8、如权利要求7所述的一种嵌入式系统中自动监测内存泄漏与内存越 界的系统,其特征在于:所述的内存地址指针长度为4。

9、如权利要求1所述的一种嵌入式系统中自动监测内存泄漏与内存越 界的系统,其特征在于:所述的释放内存大小为:释放内存块与内存地址指 针长度之和。

10、如权利要求9所述的一种嵌入式系统中自动监测内存泄漏与内存 越界的系统,其特征在于:所述的内存地址指针长度为4。

说明书
技术领域

技术领域

本发明涉及一种嵌入式系统中自动监测内存泄漏与内存越界的系统,属 于计算机技术领域。

背景技术

嵌入式系统是一种资源比较受限的系统,资源要比桌面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有内存泄漏, 进行内存泄漏报警,并报告内存泄漏地址。

当出现内存越界报警或者内存泄漏报警后,可以由其他程序或用户来判 断是否对错误报警作出处理,由此实现对内存更加可靠的操作。防止了为满 足某种特殊要求而设计不释放某些内存时,误认为内存操作错误自动修复错 误的发生。

本文发布于:2023-04-14 03:47:09,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/3/86401.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图