本发明专利技术公开了一种监控内存泄漏的方法及装置,该方法包括:监测用户针对一应用程序的用户界面操作信息,并存储监测到的用户界面操作信息;监控系统内存使用情况,得到系统的内存信息;从所述内存信息中获取标示所述一应用程序内存使用情况的关键字段值,若所述第一比较结果为所述关键字段值大于所述第一预设阈值,则确定发生了内存泄露,则利用所述用户界面操作信息和所述内存信息生成一报警信息;接收到一触发信息后,输出所述报警信息。本发明专利技术所提供的方法和装置,可以确定出现内存泄漏问题时的特定操作场景,分析对应LOG信息,便于开发人员快速定位程序中内存使用的问题。
【技术实现步骤摘要】
一种监控内存泄漏的方法及装置
本专利技术涉及电子
,尤其涉及一种监控内存泄漏的方法及装置。
技术介绍
现有技术中,使用JAVA语言在Android系统上开发应用程序时,如果使用不当,很容易发生内存泄漏,在计算机科学中,内存泄漏(memoryleak)指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费。内存泄漏与许多其他问题有着相似的症状,并且通常情况下只能由那些可以获得程序源代码的程序员才可以分析出来。然而,有不少人习惯于把任何不需要的内存使用的增加描述为内存泄漏,严格意义上来说这是不准确的。一般常说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定),使用完后必须显式释放的内存。应用程序一般使用malloc,calloc,realloc等函数(C++中使用new操作符)从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或delete释放该内存块,否则,这块内存就不能被再次使用,这就说这块内存泄漏了。Android系统的JVM提供了垃圾收集器(GarbageCollection,GC)自动管理内存的回收,程序员不需要通过调用函数来释放内存。因此,很多程序员认为Java不存在内存泄漏问题,或者认为即使有内存泄漏也不是程序的责任,而是GC或JVM的问题。其实,这种想法是不正确的,因为Java也存在内存泄漏,但它的表现与C++不同。如果正在开发的Java代码要全天24小时在服务器上运行,则内存漏洞在此处的影响就比在配置实用程序中的影响要大得多,即使最小的漏洞也会导致JVM耗尽全部可用内存。另外,在很多嵌入式系统中,内存的总量非常有限。在相反的情况下,即便程序的生存期较短,如果存在分配大量临时对象(或者若干吞噬大量内存的对象)的任何Java代码,而且当不再需要这些对象时也没有取消对它们的引用,则仍然可能达到内存极限。虽然JVM提供了GC机制可一定程度防止内存泄露,但还是不能完全避免,一旦发生泄漏,会导致应用终止,甚至系统崩溃。针对现有技术中GC机制下还是存在内存泄露的问题,现有提供的解决方案为:使用android提供的DDMS(DalvikDebugMonitorService,是Android开发环境中的Dalvik虚拟机调试监控服务)或者MAT内存分析工具。但是该方案仍然存在一些缺点如:必须连线调试,使用PC机连接手机监控内存变化,而内存泄漏可能发生在某些特定场景的操作下,比如自由测试的情况,因此连线时无法抓住这些特定操作的情况,错过发现内存泄漏问题的场景。另外,DDMS涉及较专业的操作流程,所以需要具有很强的专业技术知识才能灵活应用,所以导致操作不便。
技术实现思路
本专利技术提供一种监控内存泄漏的方法及装置,本专利技术所提供的方法和装置解决现有技术中内存泄露检测无法确定出现内存泄露问题时的特定操作情况,错过发现内存泄漏问题的场景的问题。针对上述问题本专利技术提供一种监控内存泄漏的方法,该方法应用于一电子设备中,该方法包括:监测用户针对一应用程序的用户界面操作信息,并存储监测到的用户界面操作信息;监控系统内存使用情况,得到系统的内存信息;从所述内存信息中获取标示所述一应用程序内存使用情况的关键字段值,并将所述关键字段值与第一预设阈值进行比较,得到第一比较结果;若所述第一比较结果为所述关键字段值大于所述第一预设阈值,则确定发生了内存泄露,则利用所述用户界面操作信息和所述内存信息生成一报警信息;接收到一触发信息后,输出所述报警信息。更优化的方案,存储监测到的用户界面操作信息包括:检测已存储的用户界面操作次数是否超过第二阈值,如果是,则利用新监测到用户界面操作信息覆盖已存储的用户界面操作信息。更优化的方案,利用新监测到用户界面操作信息覆盖已存储的用户界面操作信息包括:确定已存储的每个用户界面操作信息所对应的存储时间;利用新监测到的用户界面操作信息更新距离当前时间最远的用户界面操作所对应的用户界面操作信息。更优化的方案,所述用户界面操作信息包括操作控件动作信息、用户在对话框中输入的字符串信息。更优化的方案,当所述电子设备中的系统为android系统或Linux系统时,所述监控系统内存使用情况,得到系统的内存信息包括:将检测到的应用程序的进程独自占用的物理内存、监控系统已使用内存情况或空闲内存情况信息、检测本机堆内存和dalvik所使用的内存信息对应记录到预设的字段值中。针对上述方法本专利技术还提供一种监控内存泄漏的装置,该装置应用于一电子设备中,该装置包括:操作信息获取模块,用于监测用户针对一应用程序的用户界面操作信息,并存储监测到的用户界面操作信息;内存信息检测模块,用于监控系统内存使用情况,得到系统的内存信息;第一比较模块,用于从所述内存信息中获取标示所述一应用程序内存使用情况的关键字段值,并将所述关键字段值与第一预设阈值进行比较,得到第一比较结果;报警信息生成模块,若所述第一比较结果为所述关键字段值大于所述第一预设阈值,用于确定发生了内存泄露,则利用所述用户界面操作信息和所述内存信息生成一报警信息;信息输出模块,用于接收到一触发信息后,输出所述报警信息。更优化的方案,所述操作信息获取模块还用于检测已存储的用户界面操作次数是否超过第二阈值,如果是,则利用新监测到用户界面操作信息覆盖已存储的用户界面操作信息。更优化的方案,所述操作信息获取模块还用于确定已存储的每个用户界面操作信息所对应的存储时间;利用新监测到的用户界面操作信息更新距离当前时间最远的用户界面操作所对应的用户界面操作信息。更优化的方案,该装置包括转换模块,在存储监测到的用户界面操作信息之前,用于将检测到的用户界面操作信息转换为预设的脚本语言。更优化的方案,当所述电子设备中的系统为android系统或Linux系统时,内存信息检测模块还用于将检测到的应用程序的进程独自占用的物理内存、监控系统已使用内存情况或空闲内存情况信息、检测本机堆内存和dalvik所使用的内存信息对应记录到预设的字段值中。上述技术方案中的一个或两个,至少具有如下技术效果:本专利技术实施例所提供的方法和装置,首先监控了用户对一应用程序的用户界面执行操作时的操作信息,并同时监控系统内存的使用情况;当监控到系统内存使用出现异常,则可以将内存异常情况和用户的操作信息结合生成对应的报警。通过上述方法如果后续检测人员检测系统问题时候,则可以直接调取已经存储的报警信息以供检测人员分析。从而实现了内存泄露检测的离线使用,可以在应用程序开发调试阶段,由测试人员进行自由测试,压力测试等;因为发现系统内存问题的同时保存了对应的用户操作信息,所以检测人员在检测电子设备故障时能够确定设备出现问题的特定场景。当检测到出现内存泄漏问题时,可以对照特定操作场景,分析对应LOG信息,便于开发人员快速定位程序中内存使用的问题。而且本专利技术提供的方法步骤简便,无需测试人员掌握DDMS等专业工具的使用方法。附图说明图1为本专利技术实施例一种监控内存泄漏的方法的流程图;图2为本专利技术实施例一种监控内存泄漏的装置的结构示意图。具体实施方式针对现有技术本文档来自技高网...
【技术保护点】
一种监控内存泄漏的方法,该方法应用于一电子设备中,其特征在于,该方法包括:监测用户针对一应用程序的用户界面操作信息,并存储监测到的用户界面操作信息;监控系统内存使用情况,得到系统的内存信息;从所述内存信息中获取标示所述一应用程序内存使用情况的关键字段值,并将所述关键字段值与第一预设阈值进行比较,得到第一比较结果;若所述第一比较结果为所述关键字段值大于所述第一预设阈值,则确定发生了内存泄露,则利用所述用户界面操作信息和所述内存信息生成一报警信息;接收到一触发信息后,输出所述报警信息。
【技术特征摘要】
1.一种监控内存泄漏的方法,该方法应用于一电子设备中,其特征在于,该方法包括:监测用户针对一应用程序的用户界面操作信息,并存储监测到的用户界面操作信息;监控系统内存使用情况,得到系统的内存信息;从所述内存信息中获取标示所述一应用程序内存使用情况的关键字段值,并将所述关键字段值与第一预设阈值进行比较,得到第一比较结果;若所述第一比较结果为所述关键字段值大于所述第一预设阈值,则确定发生了内存泄露,则利用所述用户界面操作信息和所述内存信息生成一报警信息;接收到一触发信息后,输出所述报警信息。2.如权利要求1所述的方法,其特征在于,存储监测到的用户界面操作信息包括:检测已存储的用户界面操作次数是否超过第二阈值,如果是,则利用新监测到用户界面操作信息覆盖已存储的用户界面操作信息。3.如权利要求2所述的方法,其特征在于,利用新监测到用户界面操作信息覆盖已存储的用户界面操作信息包括:确定已存储的每个用户界面操作信息所对应的存储时间;利用新监测到的用户界面操作信息更新距离当前时间最远的用户界面操作所对应的用户界面操作信息。4.如权利要求1所述的方法,其特征在于,所述用户界面操作信息包括操作控件动作信息、用户在对话框中输入的字符串信息。5.如权利要求1所述的方法,其特征在于,当所述电子设备中的系统为android系统或Linux系统时,所述监控系统内存使用情况,得到系统的内存信息包括:将检测到的应用程序的进程独自占用的物理内存信息、监控系统已使用内存情况或空闲内存情况信息、本机堆内存和dalvik所使用的内存信息这三组信息中的任一组或多组对应记录到预设的字段值中。6.一种监控内存泄漏的装置,该装...
【专利技术属性】
技术研发人员:李彬,罗静,
申请(专利权)人:联想北京有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。