一种应用程序的检测方法、装置及电子设备与流程

文档序号:12120649阅读:186来源:国知局
一种应用程序的检测方法、装置及电子设备与流程

本发明涉及通信技术领域,尤其涉及一种应用程序的检测方法、装置及电子设备。



背景技术:

安卓应用的性能问题越来越受到重视。应用程序的内存如果不断增高,不仅造成设备卡慢,严重时会造成设备将应用程序强行关闭,从而影响用户体验。

应用程序的内存不断增高,大部分原因是存在内存泄漏的问题,原本应该释放的内存没有及时释放,新的内存又不断增加,从而造成应用程序占用的内存过大。现有的检测内存泄漏技术只能在应用程序发生OOM(out of memory,内存不足)时,报出内存泄漏点。如果在测试过程中,执行的例子无法导致程序发生OOM,则无法发现内存泄漏点。而在复杂的用户环境中,则可能出现内存泄漏,导致应用程序被系统杀死。



技术实现要素:

有鉴于此,本发明实施例提供一种应用程序的检测方法、装置及电子设备,能够在测试过程中及时检测出内存泄漏点,提高用户的使用体验。

第一方面,本发明实施例提供一种应用程序的检测方法,包括:

执行打开待检测应用程序的指定界面的操作,获取第一内存快照文件;

根据所述第一内存快照文件确定是否存在与所述指定界面相关的类引用;

若确定存在与所述指定界面相关的类的引用,将所述类作为内存泄漏点。

作为另一实施例,所述方法进一步包括:

执行所述待检测应用程序中的指定测试场景,获取第二内存快照文件;

重复执行所述指定测试场景预定次数,获取第三内存快照文件;

获取所述第二内存快照文件中和第三内存快照文件中各个类的信息;

确定所述第三内存快照文件中,是否存在与所述第二内存快照文件中的第一类相同的目标类;

若存在与所述第一类相同的目标类,则获取所述目标类的实例的数量和所述第一类的实例的数量,并将所述第一类的实例的数量和所述目标类的实例的数量进行比较;

若所述目标类的实例的数量大于所述第一类的实例的数量,将所述第一类和所述目标类作为内存泄漏点

作为另一实施例,所述根据所述第一内存快照文件确定是否存在与所述指定界面相关的类引用的步骤,具体为:

获取预设的用于展示所述指定界面的类的信息;

根据所述用于展示所述指定界面的类的信息,解析所述第一内存快照文件;

若根据对所述第一内存快照文件的解析结果,确定存在与所述用于展示所述指定界面的类的信息对应的实例,则确定存在与所述指定界面相关的类的引用。

作为另一实施例,所述方法进一步包括:

获取所述类对应的回收路径。

作为另一实施例,所述方法进一步包括:

获取所述第一类和/或目标类对应的回收路径。

第二方面,本发明实施例提供一种应用程序的检测装置,包括:

第一获取模块,用于执行打开待检测应用程序的指定界面的操作,获取第一内存快照文件;

第一确定模块,用于根据所述第一内存快照文件确定是否存在与所述指定界面相关的类引用;

检测模块,用于若确定存在与所述指定界面相关的类的引用,将所述类作为内存泄漏点。

作为另一实施例,所述装置还包括:

第二获取模块,用于执行所述待检测应用程序中的指定测试场景,获取第二内存快照文件;

第三获取模块,用于重复执行所述指定测试场景预定次数,获取第三内存快照文件;

信息获取模块,用于获取所述第二内存快照文件中和第三内存快照文件中各个类的信息;

第二确定模块,用于确定所述第三内存快照文件中,是否存在与所述第二内存快照文件中的第一类相同的目标类;

比较模块,用于若存在与所述第一类相同的目标类,则获取所述目标类的实例的数量和所述第一类的实例的数量,并将所述第一类的实例的数量和所述目标类的实例的数量进行比较;

所述检测模块还用于,若所述目标类的实例的数量大于所述第一类的实例的数量,将所述第一类和所述目标类作为内存泄漏点。

作为另一实施例,所述第一确定模块包括:

信息获取子模块,用于获取预设的用于展示所述指定界面的类的信息;

解析子模块,用于根据所述用于展示所述指定界面的类的信息,解析所述第一内存快照文件;

确定子模块,用于若根据对所述第一内存快照文件的解析结果,确定存在与所述用于展示所述指定界面的类的信息对应的实例,则确定存在与所述指定界面相关的类的引用。

作为另一实施例,所述装置还包括:

第一路径获取模块,用于获取所述类对应的回收路径。

作为另一实施例,所述装置还包括:

第二路径获取模块,用于获取所述第一类和/或目标类对应的回收路径。

第三方面,本发明实施例提供一种电子设备,所述电子设备包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一所述的应用程序的检测方法。

第四方面,本发明实施例还提供了一种存储介质,用于存储应用程序,所述应用程序用于执行本发明实施例所提供的一种应用程序的检测方法。

第五方面,本发明实施例还提供了一种应用程序,用于执行本发明实施例所提供的一种应用程序的检测方法。

本发明实施例提供的一种应用程序的检测方法、装置及电子设备,通过执行打开待检测应用程序的指定界面的操作获得的第一内存快照文件,确定是否存在与所述指定界面相关的类引用;若确定存在与所述指定界面相关的类的引用,将所述类作为内存泄漏点。因此,利用本发明实施例的方案,能够在测试过程中及时检测出内存泄漏点,进而提高用户的使用体验。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

图1为本发明实施例一应用程序的检测方法的流程图;

图2为本发明实施例二应用程序的检测方法的流程图;

图3为本发明实施例三检测应用程序内存泄漏装置的示意图;

图4为本发明实施例三检测应用程序内存泄漏装置的结构图;

图5为本发明实施例的电子设备的示意图。

具体实施方式

下面结合附图对本发明实施例进行详细描述。

应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

如图1所示,本发明实施例一的应用程序的检测方法,包括:

步骤101,执行打开待检测应用程序的指定界面的操作,获取第一内存快照文件。

其中,所述指定界面可以是待检测应用程序中的任意界面。为了获得更为准确的检测结果,所述指定界面可以是所述待检测应用程序的全部界面。

通过执行打开待检测应用程序的指定界面的操作,可获取对应的hprof文件。hprof文件违建为java虚拟机的堆内存快照文件,保存了应用程序的内存信息。在此将其称为第一内存快照文件。

步骤102,根据所述第一内存快照文件确定是否存在与所述指定界面相关的类引用。

在此步骤中,获取预设的用于展示所述指定界面的类的信息,并根据所述用于展示所述指定界面的类的信息,解析所述第一内存快照文件。若根据对所述第一内存快照文件的解析结果,确定存在与所述用于展示所述指定界面的类的信息对应的实例,则确定存在与所述指定界面相关的类的引用。其中所述类还包括位图。

步骤103,若确定存在与所述指定界面相关的类的引用,将所述类作为内存泄漏点。

如果存在,这个类可判定为内存泄漏点。此外,还可将该类对应的回收路径获取并保存下来,提供给开发人员根据回收路径解决内存泄漏问题。

由上可以看出,利用本发明实施例的方案,能够在测试过程中及时检测出内存泄漏点,进而提高用户的使用体验。

如图2所示,本发明实施例二的应用程序的检测方法,包括:

步骤201,执行打开待检测应用程序的指定界面的操作,获取第一内存快照文件。

假设待检测应用程序为某个锁屏程序,在此,打开锁屏程序的所有界面,并关闭。由此,获取第一内存快照文件。

步骤202,根据所述第一内存快照文件确定是否存在与所述指定界面相关的类引用。

步骤203,若确定存在与所述指定界面相关的类的引用,将所述类作为内存泄漏点。

步骤204,获取并存储所述类对应的回收路径。

步骤205,执行所述待检测应用程序中的指定测试场景,获取第二内存快照文件。

其中,所述指定测试场景可以是待检测应用程序的部分测试场景,也可以是全部测试场景。在此,执行锁屏软件的所有测试场景,例如,接收信息流,上拉锁屏的工具箱,划到天气页,点击某些按钮等测试场景。由此,获取第二内存快照文件。

步骤206,重复执行所述指定测试场景预定次数,获取第三内存快照文件。

其中,该预定次数可任意设置,例如设置为5次等。通过重复执行该指定测试场景,可以获取第三内存快照文件。

步骤207,获取所述第二内存快照文件中和第三内存快照文件中各个类的信息。

步骤208,确定所述第三内存快照文件中,是否存在与所述第二内存快照文件中的第一类相同的目标类。

其中,该第一类为第二内存快照文件的各个类中的任意一类。

步骤209,若存在与所述第一类相同的目标类,则获取所述目标类的实例的数量和所述第一类的实例的数量,并将所述第一类的实例的数量和所述目标类的实例的数量进行比较。

步骤210,若所述目标类的实例的数量大于所述第一类的实例的数量,将所述第一类和所述目标类作为内存泄漏点。

步骤211,获取并存储第一类和/或目标类对应的回收路径。

由上可以看出,利用本发明实施例的方案,可以在应用程序的测试阶段及时准确地发现内存泄漏点,提供有效的解决方案,防止应用程序在用户环境中发生内存泄漏,避免应用程序被“杀”,提高了用户体验。

如图3所示,本发明实施例三的检测应用程序内存泄漏装置,包括:

第一获取模块301,用于执行打开待检测应用程序的指定界面的操作,获取第一内存快照文件;第一确定模块302,用于根据所述第一内存快照文件确定是否存在与所述指定界面相关的类引用;检测模块303,用于若确定存在与所述指定界面相关的类的引用,将所述类作为内存泄漏点。

如图4所示,为了进一步提高检测准确性和全面性,所述装置还包括:

第二获取模块304,用于执行所述待检测应用程序中的指定测试场景,获取第二内存快照文件;第三获取模块305,用于重复执行所述指定测试场景预定次数,获取第三内存快照文件;信息获取模块306,用于获取所述第二内存快照文件中和第三内存快照文件中各个类的信息;第二确定模块307,用于确定所述第三内存快照文件中,是否存在与所述第二内存快照文件中的第一类相同的目标类;比较模块308,用于若存在与所述第一类相同的目标类,则获取所述目标类的实例的数量和所述第一类的实例的数量,并将所述第一类的实例的数量和所述目标类的实例的数量进行比较。此时,所述检测模块303还用于,若所述目标类的实例的数量大于所述第一类的实例的数量,将所述第一类和所述目标类作为内存泄漏点。

具体的,所述第一确定模块301包括:

信息获取子模块,用于获取预设的用于展示所述指定界面的类的信息;解析子模块,用于根据所述用于展示所述指定界面的类的信息,解析所述第一内存快照文件;确定子模块,用于若根据对所述第一内存快照文件的解析结果,确定存在与所述用于展示所述指定界面的类的信息对应的实例,则确定存在与所述指定界面相关的类的引用。

再如图4所示,所述装置还包括:

第一路径获取模块309,用于获取所述类对应的回收路径。第二路径获取模块310,用于获取所述第一类和/或目标类对应的回收路径。

本发明实施例的工作原理可参照前述方法实施例的描述。

由上可以看出,利用本发明实施例的方案,可以在应用程序的测试阶段及时准确地发现内存泄漏点,提供有效的解决方案,防止应用程序在用户环境中发生内存泄漏,避免应用程序被“杀”,提高了用户体验。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。

尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,″计算机可读介质″可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。

在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。

本发明实施例还提供一种电子设备,所述电子设备包含前述任一实施例所述的装置。

图5为本发明电子设备一个实施例的结构示意图,可以实现本发明图1所示实施例的流程,如图5所示,上述电子设备可以包括:壳体501、处理器502、存储器503、电路板504和电源电路505,其中,电路板504安置在壳体501围成的空间内部,处理器502和存储器503设置在电路板504上;电源电路505,用于为上述电子设备的各个电路或器件供电;存储器503用于存储可执行程序代码;处理器502通过读取存储器503中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一实施例所述的应用程序的检测方法。

处理器502对上述步骤的具体执行过程以及处理器502通过运行可执行程序代码来进一步执行的步骤,可以参见本发明图1或2所示实施例的描述,在此不再赘述。

本发明实施例还提供了一种存储介质,用于存储应用程序,所述应用程序用于执行本发明实施例所提供的一种应用程序的检测方法。

本发明实施例还提供了一种应用程序,用于执行本发明实施例所提供的一种应用程序的检测方法。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,″计算机可读介质″可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

为了描述的方便,描述以上装置是以功能分为各种单元/模块分别描述。当然,在实施本发明时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1