CN106354627A - 一种应用程序内存泄漏的检测方法及系统 - Google Patents

一种应用程序内存泄漏的检测方法及系统 Download PDF

Info

Publication number
CN106354627A
CN106354627A CN201610578646.7A CN201610578646A CN106354627A CN 106354627 A CN106354627 A CN 106354627A CN 201610578646 A CN201610578646 A CN 201610578646A CN 106354627 A CN106354627 A CN 106354627A
Authority
CN
China
Prior art keywords
application program
module
internal memory
variance
memory
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.)
Pending
Application number
CN201610578646.7A
Other languages
English (en)
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.)
Nubia Technology Co Ltd
Original Assignee
Nubia Technology 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 Nubia Technology Co Ltd filed Critical Nubia Technology Co Ltd
Priority to CN201610578646.7A priority Critical patent/CN106354627A/zh
Publication of CN106354627A publication Critical patent/CN106354627A/zh
Pending legal-status Critical Current

Links

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

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)
  • Telephone Function (AREA)

Abstract

本发明公开了一种应用程序内存泄漏的检测方法及系统,该方法包括步骤:S1:获取所述应用程序内存的多个采样值;S2:计算所述应用程序内存的多个采样值的方差D(X);S3:设定所述应用程序内存的方差D(X)的最大值Max和最小值Min;S4:比较所述方差D(X)、所述最大值Max和所述最小值Min之间的大小,并判定所述应用程序是否存在内存泄漏。本发明能够自动判别手机终端的应用是否存在内存泄露,判别过程无需人工干预。

Description

一种应用程序内存泄漏的检测方法及系统
技术领域
本发明涉及领域通信领域,尤其涉及一种应用程序内存泄漏的检测方法及系统。
背景技术
在计算机科学中,内存泄露是指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄露并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费。
目前手机厂商在开发自己的系统应用时,会对应用的稳定性做一个评估,包括内存、性能、功耗等,其中内存的评估是一个非常重要的方面,如果应用占用内存过大或发生内存泄露,那么会对手机造成严重的影响。在一个手机内,会有很多的内置应用和其他第三方应用,当整体性的对这些应用进行内存评估时,消耗的人力比较多。现有的方式是人工审查所有应用的内存曲线,然后才能判断某个应用是否存在内存泄露。但此种方式太消耗精力,而且效率比较低,每次进行内存评估时,都需要消耗比较多的人力。
发明内容
本发明的主要目的在于提出一种,旨在解决如何自动判别某些应用是否存在内存泄露,判别过程无需人工干预。
为实现上述目的,本发明提供的一种应用程序内存泄漏的检测方法,所述方法包括步骤:
S1:在预设时间内获取所述应用程序内存的多个采样值;
S2:计算所述应用程序内存的多个采样值的方差D(X);
S3:设定所述应用程序内存的方差D(X)的最大值Max和最小值Min;
S4:比较所述方差D(X)、所述最大值Max和所述最小值Min之间的大小,并判定所述应用程序是否存在内存泄漏。
优选的,所述方差值D(X)通过以下公式计算:
其中u=E(X);
xi为应用程序内存的采样值,pi的赋值为1。
优选的,所述步骤S4具体为:
S41:比较所述方差D(X)、所述最大值Max和所述最小值Min之间的大小;
S42:若Min<D(X)<Max,则判定为所述应用程序的内存不存在泄漏;
S44:若D(X)>Max,则判定为所述应用程序的内存存在泄漏;
S45:若D(X)<Min,则判定为所述应用程序的内存检测存在问题。
优选的,所述步骤S1之前还包括步骤:
S1.0:检测所述应用程序的内存值是否小于第一预设值,若小于则继续检测;否则执行下一个步骤。
优选的,所述步骤S1之后包括步骤:
S1.1:若所述应用程序内存的多个采样值中的任意一个值大于第二预设值,则判定为所述应用程序的内存存在泄漏;否则执行下一个步骤。
此外,为实现上述目的,本发明还提出一种应用程序内存泄漏的检测系统,所述系统包括:采样模块、方差计算模块、最大值设定模块、最小值设定模块、比较判定模块;
所述采样模块用于获取所述应用程序内存的多个采样值;
所述方差计算模块用于计算所述应用程序内存的多个采样值的方差D(X);
所述最大值设定模块用于设定所述应用程序内存的方差D(X)的最大值Max;
所述最小值设定模块用于设定所述应用程序内存的方差D(X)的最小值Min;
所述比较判定模块用于比较所述方差D(X)、所述最大值Max和所述最小值Min之间的大小,并判定所述应用程序是否存在内存泄漏。
优选的,所述方差计算模块通过以下公式计算所述方差D(X):
其中u=E(X);
xi为应用程序内存的采样值,pi的赋值为1。
优选的,所述比较判定模块包括比较模块和判定模块,所述比较模块用于比较所述方差D(X)、所述最大值Max和所述最小值Min之间的大小;所述判定模块用于根据比较模块的比较结果判定所述应用程序是否存在内存泄漏,并输出判定结果;
所述判定结果为以下类型中的一种:
若D(X)>最大值Max,则判定为所述应用程序的内存存在泄漏;
若Min<D(X)<Max,则判定为所述应用程序的内存不存在泄漏;
若D(X)<Min,则判定为所述应用程序的内存检测存在问题。
优选的,所述检测系统还包括第一预设值设定模块、第一预设值检测模块;
所述第一预设值设定模块用于设定第一预设值;
所述第一预设值检测判定模块用于检测所述应用程序的内存值是否小于第一预设值,若小于则输出判定结果为所述应用程序的内存不存在泄漏;若大于则将检测结果输入给所述采样模块。
优选的,所述检测系统还包括第二预设值设定模块、第二预设值检测模块;
所述第二预设值设定模块用于设定第二预设值;
所述第二预设值检测判定模块用于检测所述应用程序内存的多个采样值中的任意一个值是否大于第二预设值,若大于则输出判定结果为所述应用程序的内存存在泄漏;若小于则将检测结果输出给所述方差计算模块。
本发明能够自动判别手机终端的应用是否存在内存泄露,判别过程无需人工干预。
附图说明
图1为实现本发明各个实施例的移动终端的硬件结构示意图;
图2为如图1所示的移动终端的无线通信系统示意图;
图3为本发明第一实施例的应用程序内存泄漏检测方法的流程示意图;
图4为本发明第一实施例的应用程序内存泄漏检测方法中的比较判定流程示意图;
图5为本发明第一实施例的应用程序内存泄漏检测方法的一种改进的流程示意图;
图6为本发明第一实施例的应用程序内存泄漏检测方法的另一种改进的流程示意图;
图7为本发明第二实施例的应用程序内存泄漏检测系统的结构示意图;
图8为本发明第二实施例的应用程序内存泄漏检测系统的比较判定结构示意图;
图9为本发明第二实施例的应用程序内存泄漏检测系统的一种改进结构示意图;
图10为本发明第二实施例的应用程序内存泄漏检测系统的另一种改进结构示意图;
图11为应用程序内存曲线的一种示意结构图;
图12为应用程序内存曲线的一种示意结构图;
图13为应用程序内存曲线的另一种示意结构图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
现在将参考附图描述实现本发明各个实施例的移动终端。在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身并没有特定的意义。因此,"模块"与"部件"可以混合地使用。
移动终端可以以各种形式来实施。例如,本发明中描述的终端可以包括诸如移动电话、智能电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、导航装置等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。下面,假设终端是移动终端。然而,本领域技术人员将理解的是,除了特别用于移动目的的元件之外,根据本发明的实施方式的构造也能够应用于固定类型的终端。
图1为实现本发明各个实施例的移动终端的硬件结构示意。
移动终端100可以包括无线通信单元110、A/V(音频/视频)输入单元120、用户输入单元130、感测单元140、输出单元150、存储器160、接口单元170、控制器180和电源单元190等等。图1示出了具有各种组件的移动终端,但是应理解的是,并不要求实施所有示出的组件。可以替代地实施更多或更少的组件。将在下面详细描述移动终端的元件。
无线通信单元110通常包括一个或多个组件,其允许移动终端100与无线通信系统或网络之间的无线电通信。例如,无线通信单元可以包括广播接收模块111、移动通信模块112、无线互联网模块113、短程通信模块114和位置信息模块115中的至少一个。
广播接收模块111经由广播信道从外部广播管理服务器接收广播信号和/或广播相关信息。广播信道可以包括卫星信道和/或地面信道。广播管理服务器可以是生成并发送广播信号和/或广播相关信息的服务器或者接收之前生成的广播信号和/或广播相关信息并且将其发送给终端的服务器。广播信号可以包括TV广播信号、无线电广播信号、数据广播信号等等。而且,广播信号可以进一步包括与TV或无线电广播信号组合的广播信号。广播相关信息也可以经由移动通信网络提供,并且在该情况下,广播相关信息可以由移动通信模块112来接收。广播信号可以以各种形式存在,例如,其可以以数字多媒体广播(DMB)的电子节目指南(EPG)、数字视频广播手持(DVB-H)的电子服务指南(ESG)等等的形式而存在。广播接收模块111可以通过使用各种类型的广播系统接收信号广播。特别地,广播接收模块111可以通过使用诸如多媒体广播-地面(DMB-T)、数字多媒体广播-卫星(DMB-S)、数字视频广播-手持(DVB-H),前向链路媒体(MediaFLO@)的数据广播系统、地面数字广播综合服务(ISDB-T)等等的数字广播系统接收数字广播。广播接收模块111可以被构造为适合提供广播信号的各种广播系统以及上述数字广播系统。经由广播接收模块111接收的广播信号和/或广播相关信息可以存储在存储器160(或者其它类型的存储介质)中。
移动通信模块112将无线电信号发送到基站(例如,接入点、节点B等等)、外部终端以及服务器中的至少一个和/或从其接收无线电信号。这样的无线电信号可以包括语音通话信号、视频通话信号、或者根据文本和/或多媒体消息发送和/或接收的各种类型的数据。
无线互联网模块113支持移动终端的无线互联网接入。该模块可以内部或外部地耦接到终端。该模块所涉及的无线互联网接入技术可以包括WLAN(无线LAN)(Wi-Fi)、Wibro(无线宽带)、Wimax(全球微波互联接入)、HSDPA(高速下行链路分组接入)等等。
短程通信模块114是用于支持短程通信的模块。短程通信技术的一些示例包括蓝牙TM、射频识别(RFID)、红外数据协会(IrDA)、超宽带(UWB)、紫蜂TM等等。
位置信息模块115是用于检查或获取移动终端的位置信息的模块。位置信息模块的典型示例是GPS(全球定位系统)。根据当前的技术,GPS模块115计算来自三个或更多卫星的距离信息和准确的时间信息并且对于计算的信息应用三角测量法,从而根据经度、纬度和高度准确地计算三维当前位置信息。当前,用于计算位置和时间信息的方法使用三颗卫星并且通过使用另外的一颗卫星校正计算出的位置和时间信息的误差。此外,GPS模块115能够通过实时地连续计算当前位置信息来计算速度信息。
A/V输入单元120用于接收音频或视频信号。A/V输入单元120可以包括相机121和麦克风1220,相机121对在视频捕获模式或图像捕获模式中由图像捕获装置获得的静态图片或视频的图像数据进行处理。处理后的图像帧可以显示在显示单元151上。经相机121处理后的图像帧可以存储在存储器160(或其它存储介质)中或者经由无线通信单元110进行发送,可以根据移动终端的构造提供两个或更多相机1210。麦克风122可以在电话通话模式、记录模式、语音识别模式等等运行模式中经由麦克风接收声音(音频数据),并且能够将这样的声音处理为音频数据。处理后的音频(语音)数据可以在电话通话模式的情况下转换为可经由移动通信模块112发送到移动通信基站的格式输出。麦克风122可以实施各种类型的噪声消除(或抑制)算法以消除(或抑制)在接收和发送音频信号的过程中产生的噪声或者干扰。
用户输入单元130可以根据用户输入的命令生成键输入数据以控制移动终端的各种操作。用户输入单元130允许用户输入各种类型的信息,并且可以包括键盘、锅仔片、触摸板(例如,检测由于被接触而导致的电阻、压力、电容等等的变化的触敏组件)、滚轮、摇杆等等。特别地,当触摸板以层的形式叠加在显示单元151上时,可以形成触摸屏。
感测单元140检测移动终端100的当前状态,(例如,移动终端100的打开或关闭状态)、移动终端100的位置、用户对于移动终端100的接触(即,触摸输入)的有无、移动终端100的取向、移动终端100的加速或减速移动和方向等等,并且生成用于控制移动终端100的操作的命令或信号。例如,当移动终端100实施为滑动型移动电话时,感测单元140可以感测该滑动型电话是打开还是关闭。另外,感测单元140能够检测电源单元190是否提供电力或者接口单元170是否与外部装置耦接。
接口单元170用作至少一个外部装置与移动终端100连接可以通过的接口。例如,外部装置可以包括有线或无线头戴式耳机端口、外部电源(或电池充电器)端口、有线或无线数据端口、存储卡端口、用于连接具有识别模块的装置的端口、音频输入/输出(I/O)端口、视频I/O端口、耳机端口等等。识别模块可以是存储用于验证用户使用移动终端100的各种信息并且可以包括用户识别模块(UIM)、客户识别模块(SIM)、通用客户识别模块(USIM)等等。另外,具有识别模块的装置(下面称为"识别装置")可以采取智能卡的形式,因此,识别装置可以经由端口或其它连接装置与移动终端100连接。接口单元170可以用于接收来自外部装置的输入(例如,数据信息、电力等等)并且将接收到的输入传输到移动终端100内的一个或多个元件或者可以用于在移动终端和外部装置之间传输数据。
另外,当移动终端100与外部底座连接时,接口单元170可以用作允许通过其将电力从底座提供到移动终端100的路径或者可以用作允许从底座输入的各种命令信号通过其传输到移动终端的路径。从底座输入的各种命令信号或电力可以用作用于识别移动终端是否准确地安装在底座上的信号。输出单元150被构造为以视觉、音频和/或触觉方式提供输出信号(例如,音频信号、视频信号、警报信号、振动信号等等)。输出单元150可以包括显示单元151、音频输出模块152、警报单元153等等。
显示单元151可以显示在移动终端100中处理的信息。例如,当移动终端100处于电话通话模式时,显示单元151可以显示与通话或其它通信(例如,文本消息收发、多媒体文件下载等等)相关的用户界面(UI)或图形用户界面(GUI)。当移动终端100处于视频通话模式或者图像捕获模式时,显示单元151可以显示捕获的图像和/或接收的图像、示出视频或图像以及相关功能的UI或GUI等等。
同时,当显示单元151和触摸板以层的形式彼此叠加以形成触摸屏时,显示单元151可以用作输入装置和输出装置。显示单元151可以包括液晶显示器(LCD)、薄膜晶体管LCD(TFT-LCD)、有机发光二极管(OLED)显示器、柔性显示器、三维(3D)显示器等等中的至少一种。这些显示器中的一些可以被构造为透明状以允许用户从外部观看,这可以称为透明显示器,典型的透明显示器可以例如为TOLED(透明有机发光二极管)显示器等等。根据特定想要的实施方式,移动终端100可以包括两个或更多显示单元(或其它显示装置),例如,移动终端可以包括外部显示单元(未示出)和内部显示单元(未示出)。触摸屏可用于检测触摸输入压力以及触摸输入位置和触摸输入面积。
音频输出模块152可以在移动终端处于呼叫信号接收模式、通话模式、记录模式、语音识别模式、广播接收模式等等模式下时,将无线通信单元110接收的或者在存储器160中存储的音频数据转换音频信号并且输出为声音。而且,音频输出模块152可以提供与移动终端100执行的特定功能相关的音频输出(例如,呼叫信号接收声音、消息接收声音等等)。音频输出模块152可以包括扬声器、蜂鸣器等等。
警报单元153可以提供输出以将事件的发生通知给移动终端100。典型的事件可以包括呼叫接收、消息接收、键信号输入、触摸输入等等。除了音频或视频输出之外,警报单元153可以以不同的方式提供输出以通知事件的发生。例如,警报单元153可以以振动的形式提供输出,当接收到呼叫、消息或一些其它进入通信(incomingcommunication)时,警报单元153可以提供触觉输出(即,振动)以将其通知给用户。通过提供这样的触觉输出,即使在用户的移动电话处于用户的口袋中时,用户也能够识别出各种事件的发生。警报单元153也可以经由显示单元151或音频输出模块152提供通知事件的发生的输出。
存储器160可以存储由控制器180执行的处理和控制操作的软件程序等等,或者可以暂时地存储己经输出或将要输出的数据(例如,电话簿、消息、静态图像、视频等等)。而且,存储器160可以存储关于当触摸施加到触摸屏时输出的各种方式的振动和音频信号的数据。
存储器160可以包括至少一种类型的存储介质,所述存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等等。而且,移动终端100可以与通过网络连接执行存储器160的存储功能的网络存储装置协作。
控制器180通常控制移动终端的总体操作。例如,控制器180执行与语音通话、数据通信、视频通话等等相关的控制和处理。另外,控制器180可以包括用于再现(或回放)多媒体数据的多媒体模块1810,多媒体模块1810可以构造在控制器180内,或者可以构造为与控制器180分离。控制器180可以执行模式识别处理,以将在触摸屏上执行的手写输入或者图片绘制输入识别为字符或图像。
电源单元190在控制器180的控制下接收外部电力或内部电力并且提供操作各元件和组件所需的适当的电力。
这里描述的各种实施方式可以以使用例如计算机软件、硬件或其任何组合的计算机可读介质来实施。对于硬件实施,这里描述的实施方式可以通过使用特定用途集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理装置(DSPD)、可编程逻辑装置(PLD)、现场可编程门阵列(FPGA)、处理器、控制器、微控制器、微处理器、被设计为执行这里描述的功能的电子单元中的至少一种来实施,在一些情况下,这样的实施方式可以在控制器180中实施。对于软件实施,诸如过程或功能的实施方式可以与允许执行至少一种功能或操作的单独的软件模块来实施。软件代码可以由以任何适当的编程语言编写的软件应用程序(或程序)来实施,软件代码可以存储在存储器160中并且由控制器180执行。
至此,己经按照其功能描述了移动终端。下面,为了简要起见,将描述诸如折叠型、直板型、摆动型、滑动型移动终端等等的各种类型的移动终端中的滑动型移动终端作为示例。因此,本发明能够应用于任何类型的移动终端,并且不限于滑动型移动终端。
如图1中所示的移动终端100可以被构造为利用经由帧或分组发送数据的诸如有线和无线通信系统以及基于卫星的通信系统来操作。
现在将参考图2描述其中根据本发明的移动终端能够操作的通信系统。
这样的通信系统可以使用不同的空中接口和/或物理层。例如,由通信系统使用的空中接口包括例如频分多址(FDMA)、时分多址(TDMA)、码分多址(CDMA)和通用移动通信系统(UMTS)(特别地,长期演进(LTE))、全球移动通信系统(GSM)等等。作为非限制性示例,下面的描述涉及CDMA通信系统,但是这样的教导同样适用于其它类型的系统。
参考图2,CDMA无线通信系统可以包括多个移动终端100、多个基站(BS)270、基站控制器(BSC)275和移动交换中心(MSC)280。MSC280被构造为与公共电话交换网络(PSTN)290形成接口。MSC280还被构造为与可以经由回程线路耦接到基站270的BSC275形成接口。回程线路可以根据若干己知的接口中的任一种来构造,所述接口包括例如E1/T1、ATM,IP、PPP、帧中继、HDSL、ADSL或xDSL。将理解的是,如图2中所示的系统可以包括多个BSC2750。
每个BS270可以服务一个或多个分区(或区域),由多向天线或指向特定方向的天线覆盖的每个分区放射状地远离BS270。或者,每个分区可以由用于分集接收的两个或更多天线覆盖。每个BS270可以被构造为支持多个频率分配,并且每个频率分配具有特定频谱(例如,1.25MHz,5MHz等等)。
分区与频率分配的交叉可以被称为CDMA信道。BS270也可以被称为基站收发器子系统(BTS)或者其它等效术语。在这样的情况下,术语"基站"可以用于笼统地表示单个BSC275和至少一个BS270。基站也可以被称为"蜂窝站"。或者,特定BS270的各分区可以被称为多个蜂窝站。
如图2中所示,广播发射器(BT)295将广播信号发送给在系统内操作的移动终端100。如图1中所示的广播接收模块111被设置在移动终端100处以接收由BT295发送的广播信号。在图2中,示出了几个全球定位系统(GPS)卫星300。卫星300帮助定位多个移动终端100中的至少一个。
在图2中,描绘了多个卫星300,但是理解的是,可以利用任何数目的卫星获得有用的定位信息。如图1中所示的GPS模块115通常被构造为与卫星300配合以获得想要的定位信息。替代GPS跟踪技术或者在GPS跟踪技术之外,可以使用可以跟踪移动终端的位置的其它技术。另外,至少一个GPS卫星300可以选择性地或者额外地处理卫星DMB传输。
作为无线通信系统的一个典型操作,BS270接收来自各种移动终端100的反向链路信号。移动终端100通常参与通话、消息收发和其它类型的通信。特定基站270接收的每个反向链路信号被在特定BS270内进行处理。获得的数据被转发给相关的BSC275。BSC提供通话资源分配和包括BS270之间的软切换过程的协调的移动管理功能。BSC275还将接收到的数据路由到MSC280,其提供用于与PSTN290形成接口的额外的路由服务。类似地,PSTN290与MSC280形成接口,MSC与BSC275形成接口,并且BSC275相应地控制BS270以将正向链路信号发送到移动终端100。
基于上述移动终端硬件结构以及通信系统,提出本发明方法各个实施例。
请参考图10-图13,
图10展示了某个应用程序的内存曲线,在此曲线中,可以关注以下几个关键信息:
独占(dirty):这条曲线作为应用程序是否存在内存泄露的重要依据,也就是图中的绿色线条;
y轴:代表了内存大小(单位是KB),此图中,内存大小最大标到了250M;
独占(dirty)线条的坡度:可以通过观察独占线条的坡度来确定是否存在内存泄露,如图,此坡度比较平缓,波动不是很大,说明此应用程序的内存情况比较稳定,不存在内存泄露的问题。
图11展示了另一种应用程序内存情况,通过此图可以看出,这个应用程序的内存波动比较大,内存上升比较明显,从100M左右上升到250M左右,且测试时间比较短,由此可以判定此应用程序存在内存泄露的问题。
图13展示了一种极端情况,即应用程序内存毫无变化,这种情况也不正常,在应用使用过程中,应用程序内存不可能一成不变,当应用无响应时或此应用程序根本没有被使用时会发生此种情况。
通过以上便可以总结出每个应用程序内存曲线的规律,当应用程序内存曲线总体比较平缓,即应用程序内存上升的不多时内存情况是比较正常的,如果应用程序内存曲线坡度很大,则表明应用程序内存存在内存泄露。识别出这样的规律,便可以通过对应的算法自动识别出某个应用是否存在内存泄露。
基于上述的应用程序内存曲线的规律。如图3所示,本发明第一实施例提出一种应用程序内存泄漏的检测方法,该方法包括步骤:
S1:在预设时间内获取所述应用程序内存的多个采样值;
在本实施例中,预设时间可由检测人员来进行设定,在此不做限定。
S2:计算所述应用程序内存的多个采样值的方差D(X);
在本实施例中,方差值D(X)通过以下公式计算:
其中u=E(X);
xi为应用程序内存的采样值,pi的赋值为1。
S3:设定所述应用程序内存的方差D(X)的最大值Max和最小值Min;
在本实施例中,最大值Max和最小值Min的设定,可依据检测人员的经验来设定或者经过一定的测试后设定。
S4:比较所述方差D(X)、所述最大值Max和所述最小值Min之间的大小,并判定所述应用程序是否存在内存泄漏。
参考图4所示,在本实施例中,本步骤具体为:
S41:比较所述方差D(X)、所述最大值Max和所述最小值Min之间的大小;
S42:若Min<D(X)<Max,则判定为所述应用程序的内存不存在泄漏;
S44:若D(X)>Max,则判定为所述应用程序的内存存在泄漏;
S45:若D(X)<Min,则判定为所述应用程序的内存检测存在问题。
设定好相关值后,通过上述方法,能够自动判别手机终端的应用是否存在内存泄露,判别过程无需人工干预。
请参考图5所示,作为第一实施例的一种改进方案,提出一种应用程序内存泄漏的检测方法,该方法包括步骤:
S1.0:检测所述应用程序的内存值是否小于第一预设值,若小于则继续检测;否则执行下一个步骤。
S1:在预设时间内获取所述应用程序内存的多个采样值;
在本实施例中,预设时间可由检测人员来进行设定,在此不做限定。
S2:计算所述应用程序内存的多个采样值的方差D(X);
在本实施例中,方差值D(X)通过以下公式计算:
其中u=E(X);
xi为应用程序内存的采样值,pi的赋值为1。
S3:设定所述应用程序内存的方差D(X)的最大值Max和最小值Min;
在本实施例中,最大值Max和最小值Min的设定,可依据检测人员的经验来设定或者经过一定的测试后设定。
S4:比较所述方差D(X)、所述最大值Max和所述最小值Min之间的大小,并判定所述应用程序是否存在内存泄漏。
参考图4所示,在本实施例中,本步骤具体为:
S41:比较所述方差D(X)、所述最大值Max和所述最小值Min之间的大小;
S42:若Min<D(X)<Max,则判定为所述应用程序的内存不存在泄漏;
S44:若D(X)>Max,则判定为所述应用程序的内存存在泄漏;
S45:若D(X)<Min,则判定为所述应用程序的内存检测存在问题。
在该改进方案中,第一预设值的设定可依据使用该应用程序的终端设备的内存大小来设定。举例来说明,现有手机终端设备的内存一般为2G,假设设定第一预设值为50M,若该应用程序的内存值小于50M,即使它的方差D(X)比较大,也可以认为它的内存不存在泄漏问题,因为它的内存确实比较小,对系统影响不大。
请参考图6所示,在上述改进方案基础上的一种改进方案(同样可在第一实施例的基础上进行改进),在步骤S1之后包括步骤:
S1:在预设时间内获取所述应用程序内存的多个采样值;
在本实施例中,预设时间可由检测人员来进行设定,在此不做限定。
S1.1:若所述应用程序内存的多个采样值中的任意一个值大于第二预设值,则判定为所述应用程序的内存存在泄漏;否则执行下一个步骤。
S2:计算所述应用程序内存的多个采样值的方差D(X);
在本实施例中,方差值D(X)通过以下公式计算:
其中u=E(X);
xi为应用程序内存的采样值,pi的赋值为1。
S3:设定所述应用程序内存的方差D(X)的最大值Max和最小值Min;
在本实施例中,最大值Max和最小值Min的设定,可依据检测人员的经验来设定或者经过一定的测试后设定。
S4:比较所述方差D(X)、所述最大值Max和所述最小值Min之间的大小,并判定所述应用程序是否存在内存泄漏。
参考图4所示,在本实施例中,本步骤具体为:
S41:比较所述方差D(X)、所述最大值Max和所述最小值Min之间的大小;
S42:若Min<D(X)<Max,则判定为所述应用程序的内存不存在泄漏;
S44:若D(X)>Max,则判定为所述应用程序的内存存在泄漏;
S45:若D(X)<Min,则判定为所述应用程序的内存检测存在问题。
在该改进方案中,第二预设值的设定同样可依据使用该应用程序的终端设备的内存大小来设定。举例来说明,现有手机终端设备的内存一般为2G,假设设定第二预设值为500M,若应用程序内存的多个采样值中的任意一个值大于500M,我们可直接判定该应用程序的内存存在泄漏。
请参考图10-图13,图10展示了某个应用程序的内存曲线,在此曲线中,可以关注以下几个关键信息:
独占(dirty):这条曲线作为应用程序是否存在内存泄露的重要依据,也就是图中的绿色线条;
y轴:代表了内存大小(单位是KB),此图中,内存大小最大标到了250M;
独占(dirty)线条的坡度:可以通过观察独占线条的坡度来确定是否存在内存泄露,如图,此坡度比较平缓,波动不是很大,说明此应用程序的内存情况比较稳定,不存在内存泄露的问题。
图11展示了另一种应用程序内存情况,通过此图可以看出,这个应用程序的内存波动比较大,内存上升比较明显,从100M左右上升到250M左右,且测试时间比较短,由此可以判定此应用程序存在内存泄露的问题。
图13展示了一种极端情况,即应用程序内存毫无变化,这种情况也不正常,在应用使用过程中,应用程序内存不可能一成不变,当应用无响应时或此应用程序根本没有被使用时会发生此种情况。
通过以上便可以总结出每个应用程序内存曲线的规律,当应用程序内存曲线总体比较平缓,即应用程序内存上升的不多时内存情况是比较正常的,如果应用程序内存曲线坡度很大,则表明应用程序内存存在内存泄露。识别出这样的规律,便可以通过对应的算法自动识别出某个应用是否存在内存泄露。
基于上述的应用程序内存曲线的规律。参照图7所示,本发明第二实施例进一步提供一种系统。本实施例的一种应用程序内存泄漏的检测系统,该系统40包括:采样模块401、方差计算模块402、最大值设定模块404、最小值设定模块405、比较判定模块403;
采样模块401,用于在预设时间内获取应用程序内存的多个采样值;
在本实施例中,预设时间可由检测人员来进行设定,在此不做限定。
方差计算模块402,用于计算应用程序内存的多个采样值的方差D(X);
在本实施例中,方差计算模块402通过以下公式计算所述方差D(X):
其中u=E(X)
xi为应用程序内存的采样值,pi的赋值为1。
最大值设定模块404用于设定应用程序内存的方差D(X)的最大值Max;
最小值设定模块405用于设定应用程序内存的方差D(X)的最小值Min;
在本实施例中,最大值Max和最小值Min的设定,可依据检测人员的经验来设定或者经过一定的测试后设定。
比较判定模块403用于比较方差D(X)、最大值Max和最小值Min之间的大小,并判定应用程序是否存在内存泄漏。
请参考图8所示,在本实施例中,比较判定模块403包括比较模块4031和判定模块4032,比较模块4031用于比较方差D(X)、最大值Max和最小值Min之间的大小;判定模块4032用于根据比较模块的比较结果判定应用程序是否存在内存泄漏,并输出判定结果;
判定结果为以下类型中的一种:
若D(X)>最大值Max,则判定为应用程序的内存存在泄漏;
若Min<D(X)<Max,则判定为应用程序的内存不存在泄漏;
若D(X)<Min,则判定为应用程序的内存检测存在问题。
请参考图9所示,检测系统还包括第一预设值设定模块406、第一预设值检测模块400;
第一预设值设定模块406用于设定第一预设值;
第一预设值检测判定模块400用于检测应用程序的内存值是否小于第一预设值,若小于则输出判定结果为应用程序的内存不存在泄漏;若大于则将检测结果输入给所述采样模块。
在该改进方案中,第一预设值的设定可依据使用该应用程序的终端设备的内存大小来设定。举例来说明,现有手机终端设备的内存一般为2G,假设设定第一预设值为50M,若该应用程序的内存值小于50M,即使它的方差D(X)比较大,也可以认为它的内存不存在泄漏问题,因为它的内存确实比较小,对系统影响不大。
请参考图10所示,检测系统还包括第二预设值设定模块4022、第二预设值检测模块4021;
第二预设值设定模块4022用于设定第二预设值;
第二预设值检测判定模块4021用于检测应用程序内存的多个采样值中的任意一个值是否大于第二预设值,若大于则输出判定结果为应用程序的内存存在泄漏;若小于则将检测结果输出给方差计算模块。
在该改进方案中,第二预设值的设定同样可依据使用该应用程序的终端设备的内存大小来设定。举例来说明,现有手机终端设备的内存一般为2G,假设设定第二预设值为500M,若应用程序内存的多个采样值中的任意一个值大于500M,我们可直接判定该应用程序的内存存在泄漏。
本发明实施例能够自动判别手机终端的应用是否存在内存泄露,判别过程无需人工干预。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种应用程序内存泄漏的检测方法,其特征在于,所述方法包括步骤:
S1:在预设时间内获取所述应用程序内存的多个采样值;
S2:计算所述应用程序内存的多个采样值的方差D(X);
S3:设定所述应用程序内存的方差D(X)的最大值Max和最小值Min;
S4:比较所述方差D(X)、所述最大值Max和所述最小值Min之间的大小,并判定所述应用程序是否存在内存泄漏。
2.如权利要求1所述的一种应用程序内存泄漏的检测方法,其特征在于,所述方差值D(X)通过以下公式计算:
其中u=E(X);
xi为应用程序内存的采样值,pi的赋值为1。
3.如权利要求1所述的一种应用程序内存泄漏的检测方法,其特征在于,所述步骤S4具体为:
S41:比较所述方差D(X)、所述最大值Max和所述最小值Min之间的大小;
S42:若Min<D(X)<Max,则判定为所述应用程序的内存不存在泄漏;
S44:若D(X)>Max,则判定为所述应用程序的内存存在泄漏;
S45:若D(X)<Min,则判定为所述应用程序的内存检测存在问题。
4.如权利要求1-3任一所述的一种应用程序内存泄漏的检测方法,其特征在于,所述步骤S1之前还包括步骤:
S1.0:检测所述应用程序的内存值是否小于第一预设值,若小于则继续检测;否则执行下一个步骤。
5.如权利要求1-3任一所述的一种应用程序内存泄漏的检测方法,其特征在于,所述步骤S1之后包括步骤:
S1.1:若所述应用程序内存的多个采样值中的任意一个值大于第二预设值,则判定为所述应用程序的内存存在泄漏;否则执行下一个步骤。
6.一种应用程序内存泄漏的检测系统,其特征在于,所述系统包括:采样模块、方差计算模块、最大值设定模块、最小值设定模块、比较判定模块;
所述采样模块用于获取所述应用程序内存的多个采样值;
所述方差计算模块用于计算所述应用程序内存的多个采样值的方差D(X);
所述最大值设定模块用于设定所述应用程序内存的方差D(X)的最大值Max;
所述最小值设定模块用于设定所述应用程序内存的方差D(X)的最小值Min;
所述比较判定模块用于比较所述方差D(X)、所述最大值Max和所述最小值Min之间的大小,并判定所述应用程序是否存在内存泄漏。
7.如权利要求6所述的一种应用程序内存泄漏的检测系统,其特征在于,所述方差计算模块通过以下公式计算所述方差D(X):
其中u=E(X);
xi为应用程序内存的采样值,pi的赋值为1。
8.如权利要求6所述的一种应用程序内存泄漏的检测系统,其特征在于,所述比较判定模块包括比较模块和判定模块,所述比较模块用于比较所述方差D(X)、所述最大值Max和所述最小值Min之间的大小;所述判定模块用于根据比较模块的比较结果判定所述应用程序是否存在内存泄漏,并输出判定结果;
所述判定结果为以下类型中的一种:
若D(X)>最大值Max,则判定为所述应用程序的内存存在泄漏;
若Min<D(X)<Max,则判定为所述应用程序的内存不存在泄漏;
若D(X)<Min,则判定为所述应用程序的内存检测存在问题。
9.如权利要求6-8任一所述的一种应用程序内存泄漏的检测系统,其特征在于,所述检测系统还包括第一预设值设定模块、第一预设值检测模块;
所述第一预设值设定模块用于设定第一预设值;
所述第一预设值检测判定模块用于检测所述应用程序的内存值是否小于第一预设值,若小于则输出判定结果为所述应用程序的内存不存在泄漏;若大于则将检测结果输入给所述采样模块。
10.如权利要求6-8任一所述的一种应用程序内存泄漏的检测系统,其特征在于,所述检测系统还包括第二预设值设定模块、第二预设值检测模块;
所述第二预设值设定模块用于设定第二预设值;
所述第二预设值检测判定模块用于检测所述应用程序内存的多个采样值中的任意一个值是否大于第二预设值,若大于则输出判定结果为所述应用程序的内存存在泄漏;若小于则将检测结果输出给所述方差计算模块。
CN201610578646.7A 2016-07-21 2016-07-21 一种应用程序内存泄漏的检测方法及系统 Pending CN106354627A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610578646.7A CN106354627A (zh) 2016-07-21 2016-07-21 一种应用程序内存泄漏的检测方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610578646.7A CN106354627A (zh) 2016-07-21 2016-07-21 一种应用程序内存泄漏的检测方法及系统

Publications (1)

Publication Number Publication Date
CN106354627A true CN106354627A (zh) 2017-01-25

Family

ID=57843387

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610578646.7A Pending CN106354627A (zh) 2016-07-21 2016-07-21 一种应用程序内存泄漏的检测方法及系统

Country Status (1)

Country Link
CN (1) CN106354627A (zh)

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101162436A (zh) * 2006-10-13 2008-04-16 中兴通讯股份有限公司 一种通信设备系统中内存泄漏的检测方法
CN101539870A (zh) * 2008-03-21 2009-09-23 中兴通讯股份有限公司 内存泄漏检测装置及方法
CN101599048A (zh) * 2009-07-01 2009-12-09 福建星网锐捷网络有限公司 一种内存监控的方法和装置
CN101819549A (zh) * 2010-04-13 2010-09-01 东莞宇龙通信科技有限公司 一种内存泄露的定位方法及装置
CN102053868A (zh) * 2009-11-04 2011-05-11 突触计算机系统(上海)有限公司 一种内存泄露检测方法和装置
CN102681938A (zh) * 2012-05-15 2012-09-19 青岛海信移动通信技术股份有限公司 一种内存泄漏检测方法及装置
CN102866953A (zh) * 2011-07-08 2013-01-09 风网科技(北京)有限公司 存储管理系统及其存储管理方法
US20130055034A1 (en) * 2011-08-31 2013-02-28 International Business Machines Corporation Method and apparatus for detecting a suspect memory leak
CN104182320A (zh) * 2013-05-23 2014-12-03 联想(北京)有限公司 一种监控内存泄漏的方法及装置
CN105190564A (zh) * 2013-04-11 2015-12-23 甲骨文国际公司 通过用线程强度分析进行季节性趋向和预报来对云服务中的sla违反进行预测性诊断
CN105204996A (zh) * 2015-09-24 2015-12-30 努比亚技术有限公司 内存泄露检测装置及方法、终端
CN105373479A (zh) * 2015-12-14 2016-03-02 厦门美图移动科技有限公司 一种内存泄露的自动化测试方法、装置及移动终端
US20160070633A1 (en) * 2014-09-09 2016-03-10 Microsoft Corporation Memory leak analysis by usage trends correlation

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101162436A (zh) * 2006-10-13 2008-04-16 中兴通讯股份有限公司 一种通信设备系统中内存泄漏的检测方法
CN101539870A (zh) * 2008-03-21 2009-09-23 中兴通讯股份有限公司 内存泄漏检测装置及方法
CN101599048A (zh) * 2009-07-01 2009-12-09 福建星网锐捷网络有限公司 一种内存监控的方法和装置
CN102053868A (zh) * 2009-11-04 2011-05-11 突触计算机系统(上海)有限公司 一种内存泄露检测方法和装置
CN101819549A (zh) * 2010-04-13 2010-09-01 东莞宇龙通信科技有限公司 一种内存泄露的定位方法及装置
CN102866953A (zh) * 2011-07-08 2013-01-09 风网科技(北京)有限公司 存储管理系统及其存储管理方法
US20130055034A1 (en) * 2011-08-31 2013-02-28 International Business Machines Corporation Method and apparatus for detecting a suspect memory leak
CN102681938A (zh) * 2012-05-15 2012-09-19 青岛海信移动通信技术股份有限公司 一种内存泄漏检测方法及装置
CN105190564A (zh) * 2013-04-11 2015-12-23 甲骨文国际公司 通过用线程强度分析进行季节性趋向和预报来对云服务中的sla违反进行预测性诊断
CN104182320A (zh) * 2013-05-23 2014-12-03 联想(北京)有限公司 一种监控内存泄漏的方法及装置
US20160070633A1 (en) * 2014-09-09 2016-03-10 Microsoft Corporation Memory leak analysis by usage trends correlation
CN105204996A (zh) * 2015-09-24 2015-12-30 努比亚技术有限公司 内存泄露检测装置及方法、终端
CN105373479A (zh) * 2015-12-14 2016-03-02 厦门美图移动科技有限公司 一种内存泄露的自动化测试方法、装置及移动终端

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
课程教材研究所,中学数学课程教材研究中心: "《数学》", 4 September 2009, 人民教育出版社 *

Similar Documents

Publication Publication Date Title
CN104883430B (zh) 一种移动终端及其未读角标的处理方法和装置
CN106453963A (zh) 一种移动终端天线切换装置及方法
CN106406996A (zh) 一种后台应用程序的管理方法及装置
CN105812573A (zh) 一种语音处理方法及移动终端
CN106407088A (zh) 一种对多核cpu进行检测的方法和装置
CN106534591A (zh) 一种移动终端及角标显示方法
CN106803860A (zh) 一种终端应用的存储处理方法和装置
CN105975052A (zh) 屏幕切换方法及装置
CN106993084A (zh) 一种控制信息显示的方法、装置及移动终端
CN106383707A (zh) 一种图片的显示方法及系统
CN105573916A (zh) 故障检测方法及移动终端
CN104731484B (zh) 图片查看的方法及装置
CN106455009A (zh) 一种搜网装置和方法
CN106357936A (zh) 一种地图应用的控制方法及移动终端
CN106371704A (zh) 一种锁屏界面的应用快捷布局方法及终端
CN106507418A (zh) 一种基于信号强度的小区重选方法、装置及移动终端
CN106125898A (zh) 屏幕旋转的方法及装置
CN106227454B (zh) 一种触控轨迹检测系统及方法
CN105302457A (zh) 终端控制方法及装置
CN106407097A (zh) 服务器故障预警装置和方法
CN106534498A (zh) 一种应用文件夹的控制装置、方法及移动终端
CN106385669A (zh) 一种识别伪基站的方法和装置
CN106569690A (zh) 防止误触装置和方法
CN106412158A (zh) 人物拍摄装置和方法
CN106211170A (zh) 一种识别伪基站的方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20170125

RJ01 Rejection of invention patent application after publication