CN107908539B - 一种检测应用程序内存泄露的方法、终端及计算机可读存储介质 - Google Patents

一种检测应用程序内存泄露的方法、终端及计算机可读存储介质 Download PDF

Info

Publication number
CN107908539B
CN107908539B CN201710606666.5A CN201710606666A CN107908539B CN 107908539 B CN107908539 B CN 107908539B CN 201710606666 A CN201710606666 A CN 201710606666A CN 107908539 B CN107908539 B CN 107908539B
Authority
CN
China
Prior art keywords
page
application program
memory
detecting
display state
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201710606666.5A
Other languages
English (en)
Other versions
CN107908539A (zh
Inventor
林志成
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ping An Technology Shenzhen Co Ltd
Original Assignee
Ping An Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ping An Technology Shenzhen Co Ltd filed Critical Ping An Technology Shenzhen Co Ltd
Priority to CN201710606666.5A priority Critical patent/CN107908539B/zh
Publication of CN107908539A publication Critical patent/CN107908539A/zh
Priority to PCT/CN2018/083628 priority patent/WO2019019713A1/zh
Application granted granted Critical
Publication of CN107908539B publication Critical patent/CN107908539B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics

Abstract

本发明实施例提供一种检测应用程序内存泄露的方法、终端及计算机可读存储介质。所述方法包括:若接收到检测应用程序内存泄露的指令,判断是否满足检测应用程序内存泄露的预设条件;若满足检测应用程序内存泄露的预设条件,利用钩子技术在应用程序的页面生命周期方法中加入处理逻辑,以及在单例实例中加入处理逻辑,以检测应用程序的页面是否存在有内存泄露。本发明实施例利用钩子技术在应用程序的页面生命周期方法和单例实例中加入处理逻辑来检测应用程序的页面是否存在有内存泄露,可以快速检测应用程序页面的内存泄露,提高检测内存泄露的效率。

Description

一种检测应用程序内存泄露的方法、终端及计算机可读存储 介质
技术领域
本发明涉及测试技术领域,尤其涉及一种检测应用程序内存泄露的方法、终端及计算机可读存储介质。
背景技术
在应用程序开发的过程中需要对应用程序进行测试以检测是否存在内存泄露,现有的检测内存泄露的方法较为繁琐,如对于在苹果操作系统(iphone OS,IOS)上开发的应用程序,必须使用开发工具(开发工具名称为Xcode)自带的辅助工具(辅助工具名称为instrument)才能检测出是否存在内存泄露,并且使用的步骤较为繁琐,检测内存泄露的效率低。
发明内容
本发明实施例提供了一种检测应用程序内存泄露的方法、终端及计算机可读存储介质,可以快速检测应用程序的页面是否存在内存泄露,提高检测内存泄露的效率。
第一方面,本发明实施例提供了一种检测应用程序内存泄露的方法,该方法包括:
若接收到检测应用程序内存泄露的指令,判断应用程序是否满足检测内存泄露的预设条件;
若应用程序满足检测内存泄露的预设条件,利用钩子技术在应用程序的页面生命周期方法中加入处理逻辑,以及在单例实例中加入处理逻辑,以检测应用程序的页面是否存在有内存泄露。
第二方面,本发明实施例提供了一种终端,该终端包括:
判断单元,用于若接收到检测应用程序内存泄露的指令,判断应用程序是否满足检测内存泄露的预设条件;
检测单元,用于若应用程序满足检测内存泄露的预设条件,利用钩子技术在应用程序的页面生命周期方法中加入处理逻辑,以及在单例实例中加入处理逻辑,以检测应用程序的页面是否存在有内存泄露。
第三方面,本发明实施例提供了另一种终端,该终端包括:存储器和处理器;所述存储器存储有可执行的程序数据;所述处理器用于运行所述存储器中存储的所述程序数据,以执行上述第一方面所述的方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者一个以上程序,所述一个或者一个以上程序可被一个或者一个以上的处理器执行,以实现上述第一方面所述的方法。
本发明实施例提供的方法、终端及计算机可读存储介质,可以利用钩子技术在应用程序的页面生命周期方法中加入处理逻辑,以及在单例实例中加入处理逻辑,以检测应用程序的页面是否存在有内存泄露。本发明实施例可以快速检测应用程序的页面是否有内存泄露,提高检测内存泄露的效率。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种检测应用程序内存泄露的方法的示意流程图;
图2是本发明实施例提供的一种检测应用程序内存泄露的方法的子流程示意图;
图3是本发明实施例提供的一种检测应用程序内存泄露的方法的子流程示意图;
图4是图3发明实施例提供的子流程示意图;
图5是本发明实施例提供的一种终端的示意性框图;
图6是本发明实施例提供的判断单元的示意性框图;
图7是本发明实施例提供的检测单元的示意性框图;
图8是本发明实施例提供的泄露检测单元的示意性框图;
图9是本发明实施例提供的另一种终端的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
具体实现中,本发明实施例中描述的终端包括但不限于可以安装并运行应用程序的诸如移动电话、膝上型计算机或平板计算机之类的其它便携式终端。还应当理解的是,在某些实施例中,所述终端并非便携式通信终端,还包括可以安装并运行应用程序的台式计算机等。优选地,本发明实施例应用于IOS开发的终端中。
图1为本发明实施例提供的一种检测应用程序内存泄露的方法流程示意图。该方法包括S101~S102。
S101,若接收到检测应用程序内存泄露的指令,判断应用程序是否满足检测内存泄露的预设条件。具体地,如图2所示,S101包括S201-S204。S201,若接收到检测应用程序内存泄露的指令,检测应用程序是否是测试版本。如通过应用程序的标识符来检测应用程序是否为测试版本,应用程序的标识符可以包括1和0,其中,1表示为测试版本,0表示不为测试版本。测试版本默认检测内存泄露的开关是打开的。S202,若应用程序是测试版本,则确定满足检测内存泄露的预设条件。S203,若应用程序是非测试版本,获取应用程序的配置文件。该种情形包括相关人员不在应用程序所在的终端旁,如应用程序的终端在公司,而相关人员在家里。具体地,通过远程登陆应用程序所在的终端获取应用程序的配置文件。因为有远程登陆权限的限制,进一步保证了安全,以防非相关人员远程登陆。S204,根据配置文件中检测内存泄露的参数来确定是否满足检测内存泄露的预设条件。其中,检测内存泄露的参数包括检测内存泄露的开关,若配置文件中检测内存泄露的开关是打开的,则确定满足检测内存泄露的预设条件,可以检测内存泄露;若配置文件中检测内存泄露的开关是关闭的,则确定不满足检测内存泄露的预设条件,不能检测内存泄露。通过该方案,相关人员可以随时随地检测内存泄露。
S102,若满足检测应用程序内存泄露的预设条件,利用钩子技术在应用程序的页面生命周期方法中加入处理逻辑,以及在单例实例中加入处理逻辑,以检测应用程序的页面是否存在有内存泄露。其中,钩子,也称为hook,是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。使用hook技术可以改变页面生命周期方法执行加入的处理逻辑,以及执行原来方法中涉及的代码的顺序,如可以让页面生命周期方法先执行加入的处理逻辑,再执行原来方法中涉及的代码逻辑。其中,单例实例可以理解为应用程序管理后台的一个线程,是单例类的实例。应用程序启动后,该单例实例一直存在。需要注意的是,在单例实例中加入处理逻辑无需使用hook技术,因为该单例实例一直在运行。若可以检测应用程序内存泄露,利用hook技术在应用程序的页面生命周期方法中加入处理逻辑,以及在单例实例中加入处理逻辑,来检测应用程序的页面是否存在有内存泄露。
应用程序的页面生命周期方法包括页面将要显示的方法、页面将要消失的方法、页面销毁的方法。其中,页面将要显示的方法指的是在页面将要显示的时候执行的方法,页面将要消失的方法指的是在页面将要消失时执行的方法,页面销毁的方法指的是在页面销毁后执行的方法。该三个方法执行的先后顺序为页面将要显示的方法、页面将要消失的方法、页面销毁的方法。需要注意的是,页面生命周期方法还涉及有其他的方法,这里不一一列出。具体地,如图3所示,S102包括S301-S305。S301,在应用程序的页面将要显示的方法中,设置页面的标识和显示状态。其中,每个页面都设置有页面标识和显示状态。每个页面有唯一的页面标识,页面的显示状态包括将要显示、将要消失、已销毁等。每个页面的页面标识和显示状态优选保存在堆栈里。由于堆栈数据结构为后进先出,最后打开的页面,最先关闭销毁,使得关闭销毁页面的顺序与堆栈里出栈的顺序一致。一方面,加快了销毁页面的速度,另一方面,更能精确到哪个页面存在内存泄露。S302,在该页面将要消失的方法中,将页面的显示状态更改为即将消失,并启动设置的定时器。S303,在该页面销毁的方法中,将该页面的显示状态更改为已销毁。在实际执行中,若页面还存在,那么将不会执行页面销毁的方法,也就是不会将页面的显示状态更改为已销毁。S304,在单例实例中,根据定时器记录的时间,以及该页面的标识和显示状态判断该页面是否存在。若在定时器记录的预设时间内,该页面的显示状态更改为已销毁,那么该页面已经不存在了,若定时器达到预设时间,该页面的显示状态仍然是其他的状态,如将要消失的状态,即不是已销毁的状态,那么该页面仍然存在。其中,预设时间优选为5秒。S305,若该页面存在,确定并提示该页面存在内存泄露。具体地,可以以对话框的形式来提示该页面存在内存泄露。该方案可以快速定位应用程序中有内存泄露的页面,以让相关人员关注存在有内存泄露的页面。
具体地,如图4所示,S304包括S401-S403。S401,判断定时器是否达到预设时间。若定时器没有达到预设时间,接着执行S401;若定时器达到预设时间,执行S402。S402,若定时器达到预设时间,获取该页面的标识和显示状态。S403,根据该页面的标识和显示状态来判断该页面是否存在。具体地,定时器达到预设时间,若页面的显示状态为已销毁的状态,那么该页面不存在了;若页面的显示状态不为已销毁的状态,那么该页面还存在。可以理解为,在预设时间内,页面都可以正常销毁,若达到预设时间后,该页面的显示状态不为已销毁状态,那么该页面可能出现问题,即存在内存泄露。
在其他实施例中,也可以在页面消失的方法中设置并启动定时器,由于在页面生命周期中,先执行页面将要消失的方法,再执行页面消失的方法,因此若在页面消失的方法中设置并启动定时器,那么对应的预设时间就会比在页面即将消失的方法中设置并启动定时器对应的预设时间少一些。
上述实施例利用用hook技术在应用程序生命周期的方法中加入处理逻辑,以及在单例实例中加入处理逻辑,来检测应用程序的页面是否存在有内存泄露,可以快速定位应用程序内存泄露的页面,提高检测内存泄露的效率。
图5为本发明实施例提供的一种终端的示意性框图。该终端50包括判断单元501、检测单元502。
判断单元501用于若接收到检测应用程序内存泄露的指令,判断应用程序是否满足检测内存泄露的预设条件。具体地,如图6所示,判断单元包括测试版本检测单元601、检测确定单元602、配置获取单元603。测试版本检测单元601用于若接收到检测应用程序内存泄露的指令,检测应用程序是否是测试版本。如通过应用程序的标识符来检测应用程序是否为测试版本,应用程序的标识符可以包括1和0,其中,1表示为测试版本,0表示不为测试版本。测试版本默认检测内存泄露的开关是打开的。检测确定单元602用于若应用程序是测试版本,则确定满足检测内存泄露的预设条件。配置获取单元603用于若应用程序是非测试版本,获取应用程序的配置文件。该种情形包括相关人员不在应用程序所在的终端旁,如应用程序的终端在公司,而相关人员在家里。具体地,通过远程登陆应用程序所在的终端获取应用程序的配置文件。因为有远程登陆权限的限制,进一步保证了安全,以防非相关人员远程登陆。检测确定单元602还用于根据配置文件中检测内存泄露的参数来确定是否满足检测内存泄露的预设条件。其中,检测内存泄露的参数包括检测内存泄露的开关,若配置文件中检测内存泄露的开关是打开的,则确定满足检测内存泄露的预设条件,可以检测内存泄露;若配置文件中检测内存泄露的开关是关闭的,则确定不满足检测内存泄露的预设条件,不能检测内存泄露。通过该方案,相关人员可以随时随地检测内存泄露。
检测单元502用于若应用程序满足检测内存泄露的预设条件,利用hook技术在应用程序的页面生命周期方法中加入处理逻辑,以及在单例实例中加入处理逻辑,以检测应用程序的页面是否存在有内存泄露。其中,钩子,也称为hook,是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。使用hook技术可以改变页面生命周期方法执行加入的处理逻辑,以及执行原来方法中涉及的代码的顺序,如可以让页面生命周期方法先执行加入的处理逻辑,再执行原来方法中涉及的代码逻辑。其中,单例实例可以理解为应用程序管理后台的一个线程,是单例类的实例。应用程序启动后,该单例实例一直存在。需要注意的是,在单例实例中加入处理逻辑无需使用hook技术。若可以检测应用程序内存泄露,利用hook技术在应用程序的页面生命周期方法中加入处理逻辑,以及在单例实例中加入处理逻辑,来检测应用程序的页面是否存在有内存泄露。
应用程序的页面生命周期方法包括页面将要显示的方法、页面将要消失的方法、页面销毁的方法。其中,页面将要显示的方法指的是在页面将要显示的时候执行的方法,页面将要消失的方法指的是在页面将要消失时执行的方法,页面销毁的方法指的是在页面销毁后执行的方法。该三个方法执行的先后顺序为页面将要显示的方法、页面将要消失的方法、页面销毁的方法。需要注意的是,页面生命周期方法还涉及有其他的方法,这里不一一列出。具体地,如图7所示,检测单元包括设置单元701、更改启动单元702、泄露检测单元703、泄露确定单元704。设置单元701用于在应用程序的页面将要显示的方法中,设置页面的标识和显示状态。其中,每个页面都设置有页面标识和显示状态。每个页面有唯一的页面标识,页面的显示状态包括将要显示、将要消失、已销毁等。每个页面的页面标识和显示状态优选保存在堆栈里。由于堆栈数据结构为后进先出,最后打开的页面,最先关闭销毁,使得关闭销毁页面的顺序与堆栈里出栈的顺序一致。一方面,加快了销毁页面的速度,另一方面,更能精确判断出哪个页面存在内存泄露。更改启动单元702用于在该页面将要消失的方法中,将页面的显示状态更改为即将消失,启动设置的定时器。更改启动单元702还用于在该页面销毁的方法中,将该页面的显示状态更改为已销毁。在实际执行中,若页面还存在,那么将不会执行页面销毁的方法,也就是不会将页面的显示状态更改为已销毁。泄露检测单元703用于在单例实例中,根据定时器记录的时间,以及该页面的标识和显示状态判断该页面是否存在。若在定时器记录的预设时间内,该页面的显示状态更改为已销毁,那么该页面已经不存在了,若定时器达到预设时间,该页面的显示状态仍然是其他的状态,如将要消失的状态,即不是已销毁的状态,那么该页面仍然存在。其中,预设时间优选为5秒。泄露确定单元704用于若该页面存在,确定并提示该页面存在内存泄露。具体地,可以以对话框的形式来提示该页面存在内存泄露。该方案可以快速定位应用程序中有内存泄露的页面,以让相关人员关注存在有内存泄露的页面。
具体地,如图8所示,泄露检测单元包括时间判断单元801、状态获取单元802、页面判断单元803。时间判断单元801,用于判断定时器是否达到预设时间。状态获取单元802,用于若定时器达到预设时间,获取该页面的标识和显示状态。页面判断单元803,用于根据该页面的标识和显示状态来判断该页面是否存在。具体地,定时器达到预设时间,若页面的显示状态为已销毁的状态,那么该页面不存在了;若页面的显示状态不为已销毁的状态,那么该页面还存在。可以理解为,在预设时间内,页面都可以正常销毁,若达到预设时间后,该页面的显示状态不为已销毁状态,那么该页面可能出现问题,即存在内存泄露。
上述实施例利用用hook技术在应用程序生命周期的方法中加入处理逻辑,以及在单例实例中加入处理逻辑,来检测应用程序的页面是否存在有内存泄露,可以快速定位应用程序内存泄露的页面,提高检测内存泄露的效率。
图9为本发明实施例提供的另一种终端的示意性框图。该终端90包括输入装置901、输出装置902、存储器903以及处理器904,上述输入装置901、输出装置902、存储器903以及处理器904通过总线905连接。其中:
输入装置901用于提供输入检测应用程序内存泄露的指令等。具体实现中,本发明实施例的输入装置901可包括键盘、鼠标、光电输入装置、声音输入装置、触摸式输入装置等。
输出装置902用于提示页面存在内存泄露等。具体实现中,本发明实施例的输出装置902可包括显示器、显示屏、触摸屏等。
存储器903用于存储带有各种功能的程序数据。本发明实施例中存储器903存储的数据包括检测应用程序内容泄露的预设条件、页面的标识和显示状态、定时器记录的时间、预设时间等,以及可调用并运行的程序数据。具体实现中,本发明实施例的存储器903可以是系统存储器,比如,挥发性的(诸如RAM),非易失性的(诸如ROM,闪存等),或者两者的结合。具体实现中,本发明实施例的存储器903还可以是系统之外的外部存储器,比如,磁盘、光盘、磁带等。
处理器904用于运行存储器903中存储的程序数据,以执行如下操作:
若接收到检测应用程序内存泄露的指令,判断应用程序是否满足检测内存泄露的预设条件;若应用程序满足检测应用程序内存泄露的预设条件,利用在应用程序的页面生命周期方法中加入处理逻辑,以及在单例实例中加入处理逻辑,以检测应用程序的页面是否存在有内存泄露。
应用程序的页面生命周期方法包括页面将要显示的方法、页面将要消失的方法、页面销毁的方法,处理器904还执行如下操作:
在所述页面将要显示的方法中,设置所述页面的标识和显示状态;在所述页面将要消失的方法中,将所述页面的显示状态更改为即将消失,启动设置的定时器;在所述页面销毁的方法中,将所述页面的显示状态更改为已销毁;在单例实例中,根据定时器记录的时间,以及所述页面的标识和显示状态判断所述页面是否存在;若所述页面存在,确定所述页面存在内存泄露。
处理器904还执行如下操作:
判断定时器是否达到预设时间;若定时器达到预设时间,获取所述页面的标识和显示状态;根据所述页面的标识和显示状态来判断所述页面是否存在。
处理器904还执行如下操作:
若接收到检测应用程序内存泄露的指令,检测应用程序是否是测试版本;若所述应用程序是测试版本,则确定满足检测内存泄露的预设条件。
处理器904还执行如下操作:
若所述应用程序是非测试版本,获取所述应用程序的配置文件;根据所述配置文件中检测内存泄露的参数来确定是否满足检测内存泄露的预设条件。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者一个以上程序数据,所述一个或者一个以上程序数据可被一个或者一个以上的处理器执行,以实现以下步骤:
若接收到检测应用程序内存泄露的指令,判断应用程序是否满足检测内存泄露的预设条件;若应用程序满足检测内存泄露的预设条件,利用钩子技术在应用程序的页面生命周期方法中加入处理逻辑,以及在单例实例中加入处理逻辑,以检测应用程序的页面是否存在有内存泄露。
应用程序的页面生命周期方法包括页面将要显示的方法、页面将要消失的方法、页面销毁的方法,优选地,所述步骤还包括:
在所述页面将要显示的方法中,设置所述页面的标识和显示状态;在所述页面将要消失的方法中,将所述页面的显示状态更改为即将消失,启动设置的定时器;在所述页面销毁的方法中,将所述页面的显示状态更改为已销毁;在单例实例中,根据定时器记录的时间,以及所述页面的标识和显示状态判断所述页面是否存在;若所述页面存在,确定所述页面存在内存泄露。
优选地,所述步骤还包括:
判断定时器是否达到预设时间;若定时器达到预设时间,获取所述页面的标识和显示状态;根据所述页面的标识和显示状态来判断所述页面是否存在。
优选地,所述步骤还包括:
若接收到检测应用程序内存泄露的指令,检测应用程序是否是测试版本;若所述应用程序是测试版本,则确定满足检测内存泄露的预设条件。
优选地,所述步骤还包括:
若所述应用程序是非测试版本,获取所述应用程序的配置文件;根据所述配置文件中检测内存泄露的参数来确定是否满足检测内存泄露的预设条件。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的终端和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的终端和方法,可以通过其它的方式实现。例如,以上所描述的终端实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、终端或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (8)

1.一种检测应用程序内存泄露的方法,其特征在于,所述方法包括:
若接收到检测应用程序内存泄露的指令,判断应用程序是否满足检测内存泄露的预设条件;
若应用程序满足检测内存泄露的预设条件,利用钩子技术在应用程序的页面生命周期方法中加入处理逻辑,以及在单例实例中加入处理逻辑,以检测应用程序的页面是否存在有内存泄露;
应用程序的页面生命周期方法包括页面将要显示的方法、页面将要消失的方法、页面销毁的方法,
所述利用钩子技术在应用程序的页面生命周期方法中加入处理逻辑,以及在单例实例中加入处理逻辑,以检测应用程序的页面是否存在有内存泄露,包括:
在所述页面将要显示的方法中,设置所述页面的标识和显示状态;
在所述页面将要消失的方法中,将所述页面的显示状态更改为即将消失,并启动设置的定时器;
在所述页面销毁的方法中,将所述页面的显示状态更改为已销毁;
在所述单例实例中,根据定时器记录的时间,以及所述页面的标识和显示状态判断所述页面是否存在;若所述页面存在,确定所述页面存在内存泄露。
2.如权利要求1所述的方法,其特征在于,所述在所述单例实例中,根据定时器记录的时间,以及所述页面的标识和显示状态判断所述页面是否存在,包括:
判断定时器是否达到预设时间;
若定时器达到预设时间,获取所述页面的标识和显示状态;
根据所述页面的标识和显示状态来判断所述页面是否存在。
3.如权利要求1所述的方法,其特征在于,所述若接收到检测应用程序内存泄露的指令,判断应用程序是否满足检测内存泄露的预设条件,包括:
若接收到检测应用程序内存泄露的指令,检测应用程序是否是测试版本;
若所述应用程序是测试版本,则确定满足检测内存泄露的预设条件。
4.如权利要求3所述的方法,其特征在于,所述若接收到检测应用程序内存泄露的指令,判断应用程序是否满足检测内存泄露的预设条件,还包括:
若所述应用程序是非测试版本,获取所述应用程序的配置文件;
根据所述配置文件中检测内存泄露的参数来确定是否满足检测内存泄露的预设条件。
5.一种终端,其特征在于,所述终端包括:
判断单元,用于若接收到检测应用程序内存泄露的指令,判断是否满足检测应用程序内存泄露的预设条件;
检测单元,用于若应用程序满足检测内存泄露的预设条件,利用钩子技术在应用程序的页面生命周期方法中加入处理逻辑,以及在单例实例中加入处理逻辑,以检测应用程序的页面是否存在有内存泄露;
所述应用程序的页面生命周期方法包括页面将要显示的方法、页面将要消失的方法、页面销毁的方法,所述检测单元包括:
设置单元,用于在所述页面将要显示的方法中,设置所述页面的标识和显示状态;
更改启动单元,用于在所述页面将要消失的方法中,将所述页面的显示状态更改为即将消失,启动设置的定时器;
更改启动单元,还用于在所述页面销毁的方法中,将所述页面的显示状态更改为已销毁;
泄露检测单元,用于在所述单例实例中,根据定时器记录的时间,以及所述页面的标识和显示状态判断所述页面是否存在;
泄露确定单元,用于若所述页面存在,确定所述页面存在内存泄露。
6.如权利要求5所述的终端,其特征在于,所述泄露检测单元包括:
时间判断单元,用于判断定时器是否达到预设时间;
状态获取单元,用于若定时器达到预设时间,获取所述页面的标识和显示状态;
页面判断单元,用于根据所述页面的标识和显示状态来判断所述页面是否存在。
7.一种终端,其特征在于,所述终端包括:存储器和处理器;所述存储器存储有可执行的程序数据;所述处理器用于运行所述存储器中存储的所述程序数据,以执行如权利要求1-4任一项所述的方法。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者一个以上程序数据,所述一个或者一个以上程序数据可被一个或者一个以上的处理器执行,以实现如权利要求1至4任一项所述的方法。
CN201710606666.5A 2017-07-24 2017-07-24 一种检测应用程序内存泄露的方法、终端及计算机可读存储介质 Active CN107908539B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201710606666.5A CN107908539B (zh) 2017-07-24 2017-07-24 一种检测应用程序内存泄露的方法、终端及计算机可读存储介质
PCT/CN2018/083628 WO2019019713A1 (zh) 2017-07-24 2018-04-19 检测应用程序内存泄露的方法、终端及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710606666.5A CN107908539B (zh) 2017-07-24 2017-07-24 一种检测应用程序内存泄露的方法、终端及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN107908539A CN107908539A (zh) 2018-04-13
CN107908539B true CN107908539B (zh) 2020-07-17

Family

ID=61839964

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710606666.5A Active CN107908539B (zh) 2017-07-24 2017-07-24 一种检测应用程序内存泄露的方法、终端及计算机可读存储介质

Country Status (2)

Country Link
CN (1) CN107908539B (zh)
WO (1) WO2019019713A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107908539B (zh) * 2017-07-24 2020-07-17 平安科技(深圳)有限公司 一种检测应用程序内存泄露的方法、终端及计算机可读存储介质
CN109542778A (zh) * 2018-11-12 2019-03-29 中国银联股份有限公司 一种资源泄露检测的方法及装置
CN110618928A (zh) * 2019-06-25 2019-12-27 北京无限光场科技有限公司 一种内存泄露检测方法、装置、终端设备及介质
CN111324534A (zh) * 2020-02-18 2020-06-23 深圳中兴网信科技有限公司 内存泄漏的检测方法、装置、终端和计算机可读存储介质
CN112115048A (zh) * 2020-08-26 2020-12-22 北京奇艺世纪科技有限公司 内存泄露检测方法、装置、电子设备及可读存储介质
CN111966603B (zh) * 2020-09-04 2024-01-19 网易(杭州)网络有限公司 内存泄露的检测方法及装置、可读存储介质及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0778525A1 (en) * 1995-12-04 1997-06-11 NCR International, Inc. Method and apparatus for detecting memory leaks
CN106610892A (zh) * 2015-10-23 2017-05-03 腾讯科技(深圳)有限公司 内存泄漏检测方法和装置
CN106649105A (zh) * 2016-12-08 2017-05-10 武汉斗鱼网络科技有限公司 一种内存泄漏的检测方法和装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7757039B2 (en) * 2007-09-18 2010-07-13 Nikos Kaburlasos DRAM selective self refresh
CN101908018B (zh) * 2010-07-20 2012-09-26 北京海泰方圆科技有限公司 一种判断内存泄露的系统及方法
US8880757B1 (en) * 2013-09-24 2014-11-04 International Business Machines Corporation RDMA resource leakage detection and reporting
CN104572460A (zh) * 2014-12-30 2015-04-29 大唐移动通信设备有限公司 一种内存泄露的检测方法和装置
CN105912458A (zh) * 2016-03-28 2016-08-31 中国电力科学研究院 一种用于动态检测c/c++内存泄露的方法及系统
CN106407031B (zh) * 2016-09-14 2019-05-28 华为数字技术(成都)有限公司 一种内存泄露定位方法及电子设备
CN106502880B (zh) * 2016-09-20 2019-05-17 东软集团股份有限公司 一种内存泄漏调试方法及装置
CN107908539B (zh) * 2017-07-24 2020-07-17 平安科技(深圳)有限公司 一种检测应用程序内存泄露的方法、终端及计算机可读存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0778525A1 (en) * 1995-12-04 1997-06-11 NCR International, Inc. Method and apparatus for detecting memory leaks
CN106610892A (zh) * 2015-10-23 2017-05-03 腾讯科技(深圳)有限公司 内存泄漏检测方法和装置
CN106649105A (zh) * 2016-12-08 2017-05-10 武汉斗鱼网络科技有限公司 一种内存泄漏的检测方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于钩子函数的C++内存泄露检测方法;杨光;《信息与电脑》;20100715;第108页 *

Also Published As

Publication number Publication date
WO2019019713A1 (zh) 2019-01-31
CN107908539A (zh) 2018-04-13

Similar Documents

Publication Publication Date Title
CN107908539B (zh) 一种检测应用程序内存泄露的方法、终端及计算机可读存储介质
US11055406B2 (en) Application security protection method, terminal, and storage medium
CN107145782B (zh) 一种异常应用程序的识别方法、移动终端及服务器
TWI528216B (zh) 隨選檢測惡意程式之方法、電子裝置、及使用者介面
CN110929264B (zh) 漏洞检测方法、装置、电子设备及可读存储介质
CN111459818B (zh) 可视化测试方法及装置
CN109784062A (zh) 漏洞检测方法及装置
EP3405901A1 (en) Information flow tracking using incremental profiling
CN107944278A (zh) 一种内核漏洞检测方法及装置
CN108090352B (zh) 检测系统及检测方法
CN104156305A (zh) 一种应用程序测试方法及装置
CN108958890A (zh) 容器镜像检测方法、装置及电子设备
CN109063481A (zh) 一种风险检测方法和装置
US9075921B2 (en) Error simulation
CN106201787A (zh) 终端控制方法及装置
US10375576B1 (en) Detection of malware apps that hijack app user interfaces
EP2645255B1 (en) Program generating device, program generating program, and program generating method
CN108959931B (zh) 漏洞检测方法及装置、信息交互方法及设备
CN106708705B (zh) 终端后台进程监控方法和系统
CN112199282B (zh) 一种office软件的模糊测试方法、装置及设备
CN112487414B (zh) 一种进程命令行的获取方法、装置、设备以及存储介质
CN104572199B (zh) 一种禁止启动项启动的方法和装置
KR101306656B1 (ko) 악성코드 동적 분석정보 제공 장치 및 방법
CN112115048A (zh) 内存泄露检测方法、装置、电子设备及可读存储介质
CN115953889B (zh) 一种防拆功能检测方法、系统、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant