CN107908539A - 一种检测应用程序内存泄露的方法、终端及计算机可读存储介质 - Google Patents
一种检测应用程序内存泄露的方法、终端及计算机可读存储介质 Download PDFInfo
- Publication number
- CN107908539A CN107908539A CN201710606666.5A CN201710606666A CN107908539A CN 107908539 A CN107908539 A CN 107908539A CN 201710606666 A CN201710606666 A CN 201710606666A CN 107908539 A CN107908539 A CN 107908539A
- Authority
- CN
- China
- Prior art keywords
- page
- application program
- ram leakage
- detection
- dispaly 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 142
- 238000001514 detection method Methods 0.000 claims abstract description 78
- 238000012545 processing Methods 0.000 claims abstract description 38
- 238000003860 storage Methods 0.000 claims description 10
- 230000006378 damage Effects 0.000 claims description 5
- 230000005055 memory storage Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 7
- 238000012360 testing method Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 230000008034 disappearance Effects 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000005622 photoelectricity Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/362—Debugging of software
- G06F11/3636—Debugging of software by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Prevention of errors by analysis, debugging or testing of software
- G06F11/362—Debugging of software
- G06F11/366—Debugging of software using diagnostics
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
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 (10)
1.一种检测应用程序内存泄露的方法,其特征在于,所述方法包括:
若接收到检测应用程序内存泄露的指令,判断应用程序是否满足检测内存泄露的预设条件;
若应用程序满足检测内存泄露的预设条件,利用钩子技术在应用程序的页面生命周期方法中加入处理逻辑,以及在单例实例中加入处理逻辑,以检测应用程序的页面是否存在有内存泄露。
2.如权利要求1所述的方法,其特征在于,应用程序的页面生命周期方法包括页面将要显示的方法、页面将要消失的方法、页面销毁的方法,
所述利用钩子技术在应用程序的页面生命周期方法中加入处理逻辑,以及在单例实例中加入处理逻辑,以检测应用程序的页面是否存在有内存泄露,包括:
在所述页面将要显示的方法中,设置所述页面的标识和显示状态;
在所述页面将要消失的方法中,将所述页面的显示状态更改为即将消失,并启动设置的定时器;
在所述页面销毁的方法中,将所述页面的显示状态更改为已销毁;
在所述单例实例中,根据定时器记录的时间,以及所述页面的标识和显示状态判断所述页面是否存在;若所述页面存在,确定所述页面存在内存泄露。
3.如权利要求2所述的方法,其特征在于,所述在所述单例实例中,根据定时器记录的时间,以及所述页面的标识和显示状态判断所述页面是否存在,包括:
判断定时器是否达到预设时间;
若定时器达到预设时间,获取所述页面的标识和显示状态;
根据所述页面的标识和显示状态来判断所述页面是否存在。
4.如权利要求1所述的方法,其特征在于,所述若接收到检测应用程序内存泄露的指令,判断应用程序是否满足检测内存泄露的预设条件,包括:
若接收到检测应用程序内存泄露的指令,检测应用程序是否是测试版本;
若所述应用程序是测试版本,则确定满足检测内存泄露的预设条件。
5.如权利要求4所述的方法,其特征在于,所述若接收到检测应用程序内存泄露的指令,判断应用程序是否满足检测内存泄露的预设条件,还包括:
若所述应用程序是非测试版本,获取所述应用程序的配置文件;
根据所述配置文件中检测内存泄露的参数来确定是否满足检测内存泄露的预设条件。
6.一种终端,其特征在于,所述终端包括:
判断单元,用于若接收到检测应用程序内存泄露的指令,判断是否满足检测应用程序内存泄露的预设条件;
检测单元,用于若应用程序满足检测内存泄露的预设条件,利用钩子技术在应用程序的页面生命周期方法中加入处理逻辑,以及在单例实例中加入处理逻辑,以检测应用程序的页面是否存在有内存泄露。
7.如权利要求6所述的终端,其特征在于,所述应用程序的页面生命周期方法包括页面将要显示的方法、页面将要消失的方法、页面销毁的方法,所述检测单元包括:
设置单元,用于在所述页面将要显示的方法中,设置所述页面的标识和显示状态;
更改启动单元,用于在所述页面将要消失的方法中,将所述页面的显示状态更改为即将消失,启动设置的定时器;
更改启动单元,还用于在所述页面销毁的方法中,将所述页面的显示状态更改为已销毁;
泄露检测单元,用于在所述单例实例中,根据定时器记录的时间,以及所述页面的标识和显示状态判断所述页面是否存在;
泄露确定单元,用于若所述页面存在,确定所述页面存在内存泄露。
8.如权利要求7所述的终端,其特征在于,所述泄露检测单元包括:
时间判断单元,用于判断定时器是否达到预设时间;
状态获取单元,用于若定时器达到预设时间,获取所述页面的标识和显示状态;
页面判断单元,用于根据所述页面的标识和显示状态来判断所述页面是否存在。
9.一种终端,其特征在于,所述终端包括:存储器和处理器;所述存储器存储有可执行的程序数据;所述处理器用于运行所述存储器中存储的所述程序数据,以执行如权利要求1-5任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者一个以上程序数据,所述一个或者一个以上程序数据可被一个或者一个以上的处理器执行,以实现如权利要求1至5任一项所述的方法。
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 true CN107908539A (zh) | 2018-04-13 |
CN107908539B 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) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019019713A1 (zh) * | 2017-07-24 | 2019-01-31 | 平安科技(深圳)有限公司 | 检测应用程序内存泄露的方法、终端及可读存储介质 |
CN109542778A (zh) * | 2018-11-12 | 2019-03-29 | 中国银联股份有限公司 | 一种资源泄露检测的方法及装置 |
CN110618928A (zh) * | 2019-06-25 | 2019-12-27 | 北京无限光场科技有限公司 | 一种内存泄露检测方法、装置、终端设备及介质 |
CN111324534A (zh) * | 2020-02-18 | 2020-06-23 | 深圳中兴网信科技有限公司 | 内存泄漏的检测方法、装置、终端和计算机可读存储介质 |
CN111966603A (zh) * | 2020-09-04 | 2020-11-20 | 网易(杭州)网络有限公司 | 内存泄露的检测方法及装置、可读存储介质及电子设备 |
CN112115048A (zh) * | 2020-08-26 | 2020-12-22 | 北京奇艺世纪科技有限公司 | 内存泄露检测方法、装置、电子设备及可读存储介质 |
CN113688052A (zh) * | 2021-08-31 | 2021-11-23 | 南方电网科学研究院有限责任公司 | 一种电表应用程序内存泄露监测方法、终端、设备和介质 |
CN113900867A (zh) * | 2021-09-06 | 2022-01-07 | 浪潮软件股份有限公司 | 检测ios内存泄漏的方法、装置及计算机可读介质 |
Citations (7)
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 |
US20110047326A1 (en) * | 2007-09-18 | 2011-02-24 | Nikos Kaburlasos | Dram selective self refresh |
CN105912458A (zh) * | 2016-03-28 | 2016-08-31 | 中国电力科学研究院 | 一种用于动态检测c/c++内存泄露的方法及系统 |
CN106407031A (zh) * | 2016-09-14 | 2017-02-15 | 华为数字技术(成都)有限公司 | 一种内存泄露定位方法及电子设备 |
CN106502880A (zh) * | 2016-09-20 | 2017-03-15 | 东软集团股份有限公司 | 一种内存泄漏调试方法及装置 |
CN106610892A (zh) * | 2015-10-23 | 2017-05-03 | 腾讯科技(深圳)有限公司 | 内存泄漏检测方法和装置 |
CN106649105A (zh) * | 2016-12-08 | 2017-05-10 | 武汉斗鱼网络科技有限公司 | 一种内存泄漏的检测方法和装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 | 大唐移动通信设备有限公司 | 一种内存泄露的检测方法和装置 |
CN107908539B (zh) * | 2017-07-24 | 2020-07-17 | 平安科技(深圳)有限公司 | 一种检测应用程序内存泄露的方法、终端及计算机可读存储介质 |
-
2017
- 2017-07-24 CN CN201710606666.5A patent/CN107908539B/zh active Active
-
2018
- 2018-04-19 WO PCT/CN2018/083628 patent/WO2019019713A1/zh active Application Filing
Patent Citations (7)
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 |
US20110047326A1 (en) * | 2007-09-18 | 2011-02-24 | Nikos Kaburlasos | Dram selective self refresh |
CN106610892A (zh) * | 2015-10-23 | 2017-05-03 | 腾讯科技(深圳)有限公司 | 内存泄漏检测方法和装置 |
CN105912458A (zh) * | 2016-03-28 | 2016-08-31 | 中国电力科学研究院 | 一种用于动态检测c/c++内存泄露的方法及系统 |
CN106407031A (zh) * | 2016-09-14 | 2017-02-15 | 华为数字技术(成都)有限公司 | 一种内存泄露定位方法及电子设备 |
CN106502880A (zh) * | 2016-09-20 | 2017-03-15 | 东软集团股份有限公司 | 一种内存泄漏调试方法及装置 |
CN106649105A (zh) * | 2016-12-08 | 2017-05-10 | 武汉斗鱼网络科技有限公司 | 一种内存泄漏的检测方法和装置 |
Non-Patent Citations (1)
Title |
---|
杨光: "基于钩子函数的C++内存泄露检测方法", 《信息与电脑》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019019713A1 (zh) * | 2017-07-24 | 2019-01-31 | 平安科技(深圳)有限公司 | 检测应用程序内存泄露的方法、终端及可读存储介质 |
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 | 北京奇艺世纪科技有限公司 | 内存泄露检测方法、装置、电子设备及可读存储介质 |
CN111966603A (zh) * | 2020-09-04 | 2020-11-20 | 网易(杭州)网络有限公司 | 内存泄露的检测方法及装置、可读存储介质及电子设备 |
CN111966603B (zh) * | 2020-09-04 | 2024-01-19 | 网易(杭州)网络有限公司 | 内存泄露的检测方法及装置、可读存储介质及电子设备 |
CN113688052A (zh) * | 2021-08-31 | 2021-11-23 | 南方电网科学研究院有限责任公司 | 一种电表应用程序内存泄露监测方法、终端、设备和介质 |
CN113900867A (zh) * | 2021-09-06 | 2022-01-07 | 浪潮软件股份有限公司 | 检测ios内存泄漏的方法、装置及计算机可读介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2019019713A1 (zh) | 2019-01-31 |
CN107908539B (zh) | 2020-07-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107908539A (zh) | 一种检测应用程序内存泄露的方法、终端及计算机可读存储介质 | |
US20170337116A1 (en) | Application testing on different device types | |
CN108829487B (zh) | 一种弹窗的展示方法、装置、存储介质及终端 | |
CN105678164B (zh) | 检测恶意软件的方法及装置 | |
CN106412858B (zh) | 一种抢红包的方法及终端 | |
CN106294051B (zh) | 一种马达测试方法及终端 | |
EP2798428B1 (en) | Apparatus and method for managing operation of a mobile device | |
CN108628709A (zh) | 设备的硬盘检测方法及装置 | |
CN108880897A (zh) | 服务器的验收方法、装置、计算机设备及存储介质 | |
CN105512562B (zh) | 一种漏洞挖掘方法、装置及电子设备 | |
TW200825721A (en) | Plain language announcement of diagnostic and troubleshooting information for users | |
CN109614154A (zh) | 一种计算机安全启动方法 | |
CN109684795A (zh) | 应用程序反调试的方法、装置及电子设备 | |
CN108090352B (zh) | 检测系统及检测方法 | |
CN104077210B (zh) | 一种客户端崩溃的定位方法及系统 | |
CN107341085A (zh) | 一种控制装置 | |
CN111158982A (zh) | 电子设备、第一运行系统、数据处理方法及存储介质 | |
CN109240928A (zh) | 一种测试方法、装置、设备及存储介质 | |
CN105447348B (zh) | 一种显示窗口的隐藏方法、装置及用户终端 | |
CN109240934B (zh) | 应用程序性能测试方法、装置、及计算机可读存储介质 | |
KR101079036B1 (ko) | 제어망 이상 징후 탐지 장치 및 방법 | |
TW201919020A (zh) | 用於進行基於安全的電腦之候選者評估的系統和方法以及執行方法之非暫時性電腦可讀媒體 | |
KR20150116020A (ko) | 무선 네트워크를 이용한 컴퓨터 진단 및 복구 장치와 그 방법 | |
CN109783261A (zh) | 终端应用的崩溃处理方法及装置、电子设备、存储介质 | |
CN106130815B (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 |