[发明专利]一种通信设备系统中内存泄漏的检测方法无效
| 申请号: | 200610113759.6 | 申请日: | 2006-10-13 |
| 公开(公告)号: | CN101162436A | 公开(公告)日: | 2008-04-16 |
| 发明(设计)人: | 黄海伦;李小伟 | 申请(专利权)人: | 中兴通讯股份有限公司 |
| 主分类号: | G06F11/34 | 分类号: | G06F11/34;G06F11/36 |
| 代理公司: | 北京律诚同业知识产权代理有限公司 | 代理人: | 梁挥;徐金国 |
| 地址: | 518057广东省深圳市南山*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 通信 设备 系统 内存 泄漏 检测 方法 | ||
技术领域
本发明涉及通信设备系统中的内存泄漏检测方法,尤其涉及光通讯设备系统中的内存泄漏检测方法。
背景技术
内存泄漏是指分配了内存给某个程序使用,而程序使用完内存后没有释放内存,导致已分配的内存无法回收再利用。随着程序的运行,系统中可用的内存就会越来越少,导致系统由于没有足够的内存而瘫痪,造成严重影响。
一般在通信设备中运行的是嵌入式系统,该系统的内存资源很宝贵、有限。在该系统上的软件一般都要求长时间不间断运行,只要泄漏了哪怕是很少一部分的内存,日积月累下来都可能造成系统的内存不足,最后瘫痪,导致通信业务中断。
内存泄漏可能是由于开发人员考虑不周,编写的程序存在隐患没有及时释放内存,也可能是系统出现了异常,没有释放内存导致的。一般而言,在通信设备系统中运行的应用程序都存在着内存泄漏的危险。
目前,一般使用软件工具和定义内存块的生命期来检测内存泄漏,但这有几点不足。第一,这些工具大部分都是基于Windows平台的,必须把应用程序移植到Windows平台上才可以使用。第二,这些工具只能在应用程序的测试阶段使用,当应用程序移到了通信设备上运行时则不能使用。有的内存泄漏在测试阶段是难以发现的,往往只有在实际使用中才会出现。第三,很多情况下内存块的生命期是难以确定的,有的程序可能需要一直使用内存块而不释放,通过定义内存块的生命期则会发生误判。
发明内容
为了解决上述的技术问题,提供了一种新的内存泄漏检测方法,其目的在于,本发明不仅从时间上检测内存泄漏,而且还从空间上(申请内存块的位置,即申请内存块的代码所在的文件名和行号)来判断是否发生了内存泄漏,更加准确的检测和定位内存泄漏。
本发明提供了一种内存泄漏的检测方法,具有如下步骤:
步骤1、定义内存块的使用期、内存块泄露阈值和检测过滤表参数,用于为内存泄露检测提供依据;
步骤2、记录申请内存块的信息,用于记录内存块的使用信息;
步骤3、对内存块所述参数进行泄露检测,用于检测内存是否泄露。
所述内存块使用期,用于估计程序申请内存块后使用的时间;
所述内存块泄露阈值,用于从空间上判断内存是否发生泄漏;
所述检测过滤表,用于避免误判内存泄漏。
所述记录申请内存块的信息包括申请内存块的位置信息、分配的时刻和内存块使用状态。
所述位置信息使用文件名和文件行号表示,或者使用文件的唯一标识和文件行号表示,所述内存块的使用状态包括空闲和已使用。
所述检测过滤表记录程序不会释放的内存块的位置信息。
释放内存块时,将该内存块的使用状态置为空闲。
所述对内存块进行检测包括如下具体步骤:
步骤71、建立内存块信息块指针链表,将符合条件的内存块信息添加到所述内存块信息块指针链表中;
步骤72、统计所述指针链表中所述位置信息相同的内存块数目,并与所述内存块泄露阈值进行比较,判断是否发生了内存泄露。
所述步骤71中,所述添加到内存块信息块指针链表中的内存块信息包括所述内存块的分配时刻、位置信息和使用状态。
所述步骤71中,所述符合条件的内存块是指该内存块的使用时间超过所述使用期,并且该内存块的位置信息没有出现在所述检测过滤表中。
所述步骤72中,如果所述指针链表中所述位置信息相同的内存块数目大于或者等于所述内存块泄露阈值,则发生了内存泄露,且发生泄漏的位置即为内存块信息块中记录的内存块位置信息。
采用本发明提供的方法,能够准确的从时间上,空间上检测出内存泄漏,而且具有很大的灵活性。内存块的使用期可以根据不同的程序使用内存块情况而定。当内存块泄漏阀值定义得比较大时,比如定义为3,适用于检测出泄漏了大于等于3个内存块的情况。当内存块泄漏阀值定义为1时,则只要超过了使用期则认为发生了内存泄漏。假如存在某个程序的确需要很长时间使用内存块而不会释放,则可以把该程序申请内存块代码的位置信息添加到检测过滤表中,以减少误判,使得判断出来的内存泄漏更准确、实用。采用本发明提供的方法不显著增加内存块申请的时间,检测时只检测使用时间超出了使用期的内存块,不会显著的影响系统的性能。而且该发明不仅在通信设备的测试阶段使用,还可以在通信设备实际应用阶段使用。
附图说明
图1是内存泄漏检测实施例流程图;
图2是记录申请内存块位置信息示意图;
图3是内存泄漏检测链表图。
具体实施方式
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中兴通讯股份有限公司,未经中兴通讯股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200610113759.6/2.html,转载请声明来源钻瓜专利网。





