自动释放嵌入式系统中应用程序模块泄漏内存的系统的制作方法

文档序号:6651321阅读:252来源:国知局
专利名称:自动释放嵌入式系统中应用程序模块泄漏内存的系统的制作方法
技术领域
本发明涉及一种释放内存的系统,特别地涉及一种自动释放嵌入式系统中应用程序模块泄漏内存的系统,属于计算机技术领域。
背景技术
嵌入式系统是一种资源比较受限的系统,资源要比桌面PC更为宝贵,因而内存有效使用的重要性勿庸置疑。如何利用好有限的内存发挥最大效能,就成了嵌入式系统进一步发展的关键问题。
目前,大多数嵌入式系统采用的是实存储器管理策略,对于内存的访问是直接的,也即直接送到地址线上输出,所有程序中访问的地址都是实际的物理地址;而且,大多数嵌入式操作系统对内存空间没有保护,各个程序运行实际上共享一个运行空间。一个程序在执行前,系统必须为它分配足够的地址空间,而用户内存空间为RAM中全局数据和任务堆栈空间都分配后的剩余空间,为了使程序能有足够的内存运行,必须在申请的内存不用后及时地将其释放,以确保再次申请时能有空间。如果程序中存在内存泄漏(即申请内存后没有及时释放)的情况,程序最终会因为没有足够的内存空间而无法运行。因此如何有效地自动释放嵌入式系统中应用程序模块未释放内存是亟待解决的一个问题。

发明内容
本发明要解决的技术问题是提出一种能够自动监测未释放的内存,并自动释放的系统,为内存的有效使用提供了条件。
本发明是通过下述技术手段来实现的一种自动释放嵌入式系统中应用程序模块泄漏内存的系统,包括内存申请单元、内存释放单元、模块状态感知单元、管理配置单元以及泄漏内存释放单元,其中所述的内存申请单元,用于内存申请过程操作;所述的内存释放单元,用于内存释放过程操作;所述的模块状态感知单元,用于接收应用程序模块的各种运行状态信息,并与所述的内存申请单元、内存释放单元以及泄漏内存释放单元连接,触发上述单元对内存进行操作;所述的管理配置单元,用于建立和实时更新保存模块的标识、模块使用内存情况以及模块分配内存地址的内存索引,与所述的内存申请单元、内存释放单元以及泄漏内存释放单元连接;所述的泄漏内存释放单元,用于判断是否存在泄漏内存并释放泄漏内存。
进一步地,所述的模块状态感知单元进一步地包括用于接收应用程序模块进入信息,并触发内存申请单元对内存操作的模块调用感知单元;用于接收应用程序模块结束信息,并触发内存释放单元对内存操作的操作结束感知单元;用于接收应用程序模块退出信息,并触发泄漏内存释放单元对内存操作的模块退出感知单元。
进一步地,所述的泄漏内存释放单元判断是否存在泄漏内存是通过下述方法实现的判断应用程序模块是否有对应的非空内存索引项,如果有,表明存在内存泄漏。
进一步地,所述的泄漏内存释放单元释放泄漏内存是通过下述方法实现的释放非空内存索引项所指向索引地址的内存块,设置内存索引项为空,释放该模块建立内存索引占用内存。
进一步地,所述的内存索引为数组,数组大小为应用程序模块的最大使用值。
进一步地,所述的内存索引为动态链表形式,在内存申请时自动添加。
进一步地,所述的申请内存的大小为应用程序模块运行所需内存与内存索引地址指针长度之和,所述的内存索引地址指针长度为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有内存泄漏,释放对应的内存块,设置该内存索引项为空,并将该信息传递给报警单元7,进行内存泄漏报警;然后释放该模块M的内存索引区。
权利要求
1.一种自动释放嵌入式系统中应用程序模块泄漏内存的系统,包括用于内存申请过程操作的内存申请单元、用于内存释放过程操作的内存释放单元,其特征在于,该系统还包括模块状态感知单元、管理配置单元以及泄漏内存释放单元,其中所述的模块状态感知单元,用于接收应用程序模块的各种运行状态信息,并与所述的内存申请单元、内存释放单元以及泄漏内存释放单元连接,触发上述单元对内存进行操作;所述的管理配置单元,用于建立和实时更新保存模块的标识、模块使用内存情况以及模块分配内存地址的内存索引;与所述的内存申请单元、内存释放单元以及泄漏内存释放单元连接;所述的泄漏内存释放单元,用于判断是否存在泄漏内存并释放泄漏内存。
2.如权利要求1所述的一种自动释放嵌入式系统中应用程序模块泄漏内存的系统,其特征在于,所述的模块状态感知单元进一步地包括用于接收应用程序模块进入信息,并触发内存申请单元对内存操作的模块调用感知单元;用于接收应用程序模块结束信息,并触发内存释放单元对内存操作的操作结束感知单元;用于接收应用程序模块退出信息,并触发泄漏内存释放单元对内存操作的模块退出感知单元。
3.如权利要求1所述的一种自动释放嵌入式系统中应用程序模块泄漏内存的系统,其特征在于,所述的泄漏内存释放单元判断是否存在泄漏内存是通过下述方法实现的判断应用程序模块是否有对应的非空内存索引项,如果有,表明存在内存泄漏。
4.如权利要求1所述的一种自动释放嵌入式系统中应用程序模块泄漏内存的系统,其特征在于,所述的泄漏内存释放单元释放泄漏内存是通过下述方法实现的释放非空内存索引项所指向索引地址的内存块,设置内存索引项为空,释放该模块建立内存索引占用内存。
5.如权利要求1所述的一种自动释放嵌入式系统中应用程序模块泄漏内存的系统,其特征在于,所述的内存索引为数组,数组大小为应用程序模块的最大使用值。
6.如权利要求1所述的一种自动释放嵌入式系统中应用程序模块泄漏内存的系统,其特征在于所述的内存索引为动态链表形式,在内存申请时自动添加。
7.如权利要求1所述的一种自动释放嵌入式系统中应用程序模块泄漏内存的系统,其特征在于所述的申请内存的大小为应用程序模块运行所需内存与内存索引地址指针长度之和,所述的内存索引地址指针长度为4。
8.如权利要求1所述的一种自动释放嵌入式系统中应用程序模块泄漏内存的系统,其特征在于所述的释放内存大小为释放内存块与内存索引地址指针长度之和,所述的内存索引地址指针长度为4。
9.如权利要求1所述的一种自动释放嵌入式系统中应用程序模块泄漏内存的系统,其特征在于该系统还包括与内存释放单元和泄漏内存释放单元相连的报警单元,在释放内存与申请内存大小不相等、释放内存地址错误以及存在泄漏内存时,发出报警提示。
全文摘要
本发明公开了一种自动释放嵌入式系统中应用程序模块泄漏内存的系统,包括内存申请单元、内存释放单元、模块状态感知单元、管理配置单元和泄漏内存释放单元,其中模块状态感知单元,用于接收应用程序模块的各种运行状态信息,并与内存申请单元、内存释放单元以及泄漏内存释放单元连接,触发上述单元对内存进行操作;所述的管理配置单元,用于建立和实时更新保存模块的标识、模块使用内存情况以及模块分配内存地址的内存索引,与内存申请单元、内存释放单元以及泄漏内存释放单元连接;所述的泄漏内存释放单元,用于判断是否存在泄漏内存并释放泄漏内存。本发明解决了嵌入式系统中泄漏内存没有及时释放的问题,有效地利用了有限的内存空间。
文档编号G06F12/02GK1979428SQ20051013008
公开日2007年6月13日 申请日期2005年12月8日 优先权日2005年12月8日
发明者蒋敏 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1