一种内存泄漏检测方法及装置制造方法及图纸

技术编号:7786369 阅读:161 留言:0更新日期:2012-09-21 07:25
本发明专利技术公开了一种内存泄漏检测方法及装置,该方法包括:系统每启动一个应用程序,针对该应用程序建立相应的内存动态申请信息,并在任意一个应用程序执行过程中,按照预设方式多次统计任意一应用程序对应的内存动态申请信息;根据获得的各统计结果分析内存动态申请信息的变化情况,确定内存动态申请信息发生规律性变化时,判定对应上述任意一应用程序存在内存泄漏。这样,能够方便地判断是否存在内存泄漏,准确定位内存泄漏在代码中的位置,方便系统测试人员针对内存泄漏问题对系统进行调试。

【技术实现步骤摘要】

本专利技术涉及通信设备测试领域,尤其涉及ー种内存泄漏的检测方法及装置。
技术介绍
当程序运行时,程序中的内存动态空间申请语句会向系统申请用于存储数据的空间,此时,系统从内存的heap空间中开辟一个动态空间并分配给该申请程序;当程序运行结束后,系统释放为该程序开辟的动态空间,以便其他程序运行时继续使用heap空间;此时,可能存在由于程序设计的失误,导致系统未及时释放临时开辟的动态空间的情况,这种情况即为内存泄漏。内存泄漏会使系统heap空间越来越小,系统运行速度降低。当内存泄漏达到一定程度时,可使系统运行非常缓慢,直至系统无法分配出动态空间,即heap空间耗尽,最終导 致整个系统瘫痪。内存泄漏是软件运行过程中经常遇到的问题,同时又是难以解决的问题,这是因为在系统刚开始出现内存泄漏时,一般没有明显的表现;当内存泄漏严重,系统中heap空间被耗尽而导致系统崩溃时,再查找内存泄漏在代码中的位置就比较困难。现有技术下,对于解决内存泄漏的查找和定位问题,通常采用在整个系统中引入内存泄漏检测程序,统计内存动态分配和释放的信息记录在日志文件中,并根据上述信息得出未释放内存的次数和大小,最终输出日志文件至終端,方便测试人员进行调试。该专利技术存在的问题是,由于输出至日志文件的统计信息为无序排列,测试人员需要进行大量繁琐的工作分析上述统计信息,从而判断是否存在内存信息,浪费了大量人力,执行效率低,并不能完全排除内存泄漏问题,复杂的内存泄漏检测程序消耗系统资源,也会使系统负担加重。综上所述,内存泄漏不利于系统顺畅的运行,而现有技术下的解决方案,存在内存泄漏检测程序占用系统空间,误差率大,内存泄漏故障排除不充分,对系统测试人员要求较高,不便于实现等问题。
技术实现思路
本专利技术实施例提供ー种内存泄漏检测方法及装置,用以解决现有技术中存在的系统内存泄漏检测过程中,存在的内存泄漏检测程序占用系统空间大,误差率大,需要浪费大量人力进行内存泄漏判定等问题。本专利技术实施例提供的具体技术方案如下ー种内存泄漏检测方法,所述方法包括系统每启动ー个应用程序,针对该应用程序建立相应的内存动态申请信息,并在任意一个应用程序执行过程中,按照预设方式多次统计所述任意一应用程序对应的内存动态申请信息;根据获得的各统计结果分析所述内存动态申请信息的变化情况,确定所述内存动态申请信息发生规律性变化时,判定所述任意一应用程序存在内存泄漏。ー种内存泄漏检测装置,该装置包括申请信息建立模块,系统每启动ー个应用程序,针对该应用程序建立相应的内存动态申请信息,并在任意一个应用程序执行过程中,按照预设方式多次统计所述任意ー应用程序对应的内存动态申请信息;判定模块,用于根据获得的各统计结果分析所述内存动态申请信息的变化情況,确定所述内存动态申请信息发生规律性变化时,判定上述任意ー应用程序存在内存泄漏。本专利技术实施例中,系统每启动ー个应用程序,针对该应用程序建立相应的内存动态申请信息,并在任意一个应用程序执行过程中,按照预设方式多次统计任意一应用程序对应的内存动态申请信息;根据获得的各统计结果分析上述内存动态申请信息的变化情况,确定该内存动态申请信息发生规律性变化吋,判定对应任意一应用程序存在内存泄漏。结合对内存动态信息中关键数据的统计,能够方便地判断是否存在内存泄漏,准确定位内 存泄漏在代码中的位置,方便系统测试人员针对内存泄漏问题对系统进行调试。附图说明图I为本专利技术实施例中内存泄漏检测装置结构图;图2为本专利技术实施例中内存泄漏检测的具体实施流程;图3为本专利技术实施例中内存信息统计过程示意图。具体实施例方式本专利技术实施例中,系统每启动ー个应用程序,针对该应用程序建立相应的内存动态申请信息,并在任意一个应用程序执行过程中,按照预设方式多次统计任意一应用程序对应的内存动态申请信息;根据获得的各统计结果分析上述内存动态申请信息的变化情况,确定该内存动态申请信息发生规律性变化吋,判定对应任意一应用程序存在内存泄漏。结合对内存申请信息中关键数据的统计,能够方便地判断是否存在内存泄漏,准确定位内存泄漏在代码中的位置,方便系统测试人员针对内存泄漏问题对系统进行调试。下面结合附图对本专利技术优选的实施方式进行详细说明。參阅图I所示,本专利技术实施例中的ー种内存泄漏检测装置包括申请信息建立模块11和判定模块12,其中,申请信息建立模块11,用于当系统每启动ー个应用程序,针对该应用程序建立相应的内存动态申请信息,并在任意一个应用程序执行过程中,按照预设方式多次统计上述任意一应用程序对应的内存动态申请信息;判定模块12,用于根据获得的各统计结果分析上述内存动态申请信息的变化情况,确定该内存动态申请信息发生规律性变化时,判定上述任意一应用程序存在内存泄漏。内存泄漏检测装置可以嵌入到待检测通信设备的操作系统当中,也可以制作成一个即插即拔装置,接入待检测通信设备,即可检测该通信设备系统是否存在系统泄漏问题。基于上述内存泄漏检测装置,參阅图2所示,下面以任意一应用程序记为程序A为例详细介绍本专利技术实施例提供的具体技术方案步骤200 :系统每启动ー个应用程序,针对该应用程序建立相应的内存动态申请信息,并在任意一个应用程序执行过程中,按照预设方式多次统计上述任意ー应用程序对应的内存动态申请信息。具体为在系统内存动态申请的统一接ロ处添加内存动态申请信息统计程序,系统每启动ー个程序,则该程序建立相应的内存动态申请信息。在任意一个应用程序(以下简称程序A)执行过程中,按照预设方式多次统计上述程序A对应的内存动态申请信息,如,在启动程序A后,针对程序A按照预设时长周期性统计或者按照预设次数多次统计程序A对应的内存动态申请信息,在上述统计内存动态申请信息的过程中,可以根据用户指示,随时进行暂停处理。上述程序A可以为ー个应用程序,如“游戏”应用程序,也可以为一段公共代码。例如,可以在系统内存动态申请统ー接ロ处定义了一个统计内存动态申请信息的函数,该函数包含程序A的所在文件名、行号、未释放的动态申请总次数和未释放的动态内存总大小等參数;然后,定义某一内存空间来存储上述内存动态申请信息;判断该是否存 在内存动态空间申请,如果存在,则统计内存动态申请信息,并将内存动态申请信息实时反馈到用户操作界面。上述动态申请相关的统计信息,内存动态申请信息可以包括以下几种动态申请语句所在的模块名称(可以为空);动态申请语句所在的文件名称;动态申请语句所在的行号;动态申请所分配的起始地址;动态申请的内存大小;未释放的动态申请总次数;未释放的动态内存总大小。其中,动态申请语句所在的文件名称,动态申请语句所在的行号,以及未释放的动态内存总大小或/和未释放的动态申请总次数为必须统计项;用户操作界面中显示上述内存动态申请信息所有项为优选方案。动态申请语句所在的行号可以为一行行号也可以为多行行号,即触发程序A某种功能时,该功能对应的申请内存动态空间的代码对应的行号。上述统计内存动态申请信息过程可以采用实时统计的形式,即只要系统中存在程序或者代码运行,即统计该运行的程序A内存动态申请信息;也可以采用触发形式启动内存动态申请信息的统计,即根据用户指示,如在操作界面输入暗码或者在操作界面选择内存动态申请信息统计图标,启动内存动态申请信息统计程序。显然,上述第二种方式更加本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种内存泄漏检测方法,其特征在于,所述方法包括 系统每启动一个应用程序,针对该应用程序建立相应的内存动态申请信息,并在任意一个应用程序执行过程中,按照预设方式多次统计所述任意一应用程序对应的内存动态申请 目息; 根据获得的各统计结果分析所述内存动态申请信息的变化情况,确定所述内存动态申请信息发生规律性变化时,判定所述任意一应用程序存在内存泄漏。2.如权利要求I所述的方法,其特征在于,所述按照预设方式多次统计所述任意一应用程序对应的内存动态申请信息,包括 按照预设时长周期性统计所述任意一应用程序对应的内存动态申请信息;或者 按照预设次数统计所述任意一应用程序对应的内存动态申请信息。3.如权利要求I所述的方法,其特征在于,所述内存动态申请信息至少包括动态申请语句所在的文件名称和行号,以及未释放的动态内存总大小或/和未释放的动态申请总次数。4.如权利要求I至3任一项所述的方法,其特征在于,确定所述内存动态申请信息发生规律性变化时,判定所述任意一应用程序存在内存泄漏,包括 根据获得的各统计结果,确定多次统计的内存泄漏申请信息包含的未释放的动态内存总大小或未释放的动态申请总次数在预设范围内变化时,判定所述任意一应用程序存在内存泄漏,并通过动态申请语句所在文件名称和行号定位内存泄漏的位置。5.如权利要求I所述的方法,其特征在于,所述统计内存动态申请信息,包括 采用实时统计的方式统计内存动态申请信息;或者 采...

【专利技术属性】
技术研发人员:张立震
申请(专利权)人:青岛海信移动通信技术股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1