系统内存分析的方法及电子设备与流程

文档序号:28618618发布日期:2022-01-22 13:10阅读:98来源:国知局
系统内存分析的方法及电子设备与流程

1.本技术涉及终端技术领域,尤其涉及一种系统内存分析的方法及电子设备。


背景技术:

2.随着终端技术的发展,应用程序(application,app)的种类越来越丰富。当用户处理不同事务时,会在不同应用之间进行切换,一些当前未使用的应用会被切换至后台运行。当用户需要再次操作后台运行的应用时,可以直接将该应用从后台切换到前台,也即对应用进行热启动。相对于冷启动方式来说,热启动方式能够大大提高用户对应用的使用效率。
3.对后台应用程序的再次启动被称为热启动。受限于系统内存资源,为了保证前台应用运行的流畅性,当系统剩余可用内存不足时,系统会按照优先级从低到高的顺序对后台运行的应用进程进行查杀,从而影响应用的热启动能力。通常来说,对后台应用进程的查杀取决于系统的应用清理内存水线,当剩余系统可用内存达到该应用清理内存水线时,系统会启动查杀应用进程。
4.然而,目前不同厂商的应用查杀规则不同,测试人员无法全面获知不同类型终端对应的触发应用清理的清理内存水线,难以直观比较不同类型的终端之间的内存性能和热启动能力,进而无法为内存性能的改善提供指引。


技术实现要素:

5.本技术提供了一种系统内存分析的方法及电子设备,该方法通过模拟用户实际操作应用环境,根据操作不同应用时的内存信息对触发应用查杀的内存水线进行测量,解决目前无法准确获取应用缓存的可用内存,以及无法准确评估应用热启动能力的问题。
6.第一方面,提供了一种系统内存分析的方法,其中,应用于电子设备,所述方法包括:获取电子设备的静态内存水线,所述静态内存水线为所述电子设备未启动应用时对应的系统可用内存;获取所述电子设备的清理内存水线,所述清理内存水线为所述系统被触发发生清理所述应用的行为时对应的系统可用内存;根据所述静态内存水线和所述清理内存水线获取所述电子设备的实际系统可用内存。
7.结合第一方面,在第一方面的某些实现方式中,所述获取所述电子设备的清理内存水线,具体包括:当电子设备依次在前台运行第一应用序列中的每一应用时,分别获取当前处于运行状态中的各所述应用分别对应的进程信息,所述第一应用序列包括n个所述应用,n为大于或等于2的整数;根据所述进程信息获取所述电子设备的清理内存水线。
8.结合第一方面,在第一方面的某些实现方式中,所述方法还包括:
当所述电子设备在前台运行所述第一应用序列中的第i个应用时,获取当前处于运行状态中的各所述应用对应的第一进程信息,i依次为1,
……
,n,n为大于或等于2的整数;获取第i+1个应用在前台运行时对应的所述第一进程信息,和第i个应用在前台运行时对应的所述第一进程信息的第一比较结果;当所述第一比较结果指示所述第n个应用在前台运行时对应的所述第一进程信息发生目标改变时,获取所述第一应用序列中前n-1个所述应用占用的第一系统内存,n为小于或等于n的正整数;根据所述第一系统内存获取所述清理内存水线。
9.结合第一方面,在第一方面的某些实现方式中,所述目标改变包括:前i个所述应用中,至少一个已启动的所述应用对应的进程信息缺失;或者,前i个所述应用中,至少一个所述应用的应用进程对应的进程号发生改变。
10.结合第一方面,在第一方面的某些实现方式中,所述当所述比较结果指示所述第n个应用在前台运行时对应的所述第一进程信息发生目标改变时,获取所述第一应用序列中前n-1个所述应用的应用进程占用的第一系统内存,具体包括:根据所述第一应用序列中的前n-1个应用构建第二应用序列;当所述电子设备在前台运行第p个应用时,分别获取对应的第二进程信息和内存信息,所述第p个应用为所述第二应用序列中的应用,p依次为1,
……
,n-1;根据所述第二进程信息和所述内存信息获取所述第一应用序列中前n-1个所述应用占用的第一系统内存。
11.结合第一方面,在第一方面的某些实现方式中,所述根据所述第一系统内存获取所述清理内存水线,具体包括:计算所述静态内存水线和所述第一系统内存的差值,获取剩余系统可用内存;占用预设空间的内存,并且占用之后获取所述n-1个应用对应的第三进程信息;获取所述第三进程信息与所述电子设备在前台运行第n-1个应用时对应的所述第二进程信息的第二比较结果;当所述第二比较结果指示所述第三进程信息发生所述目标改动后,根据所述剩余系统可用内存、所述占用预设空间的内存的次数以及所述预设空间的大小计算所述清理内存水线。
12.结合第一方面,在第一方面的某些实现方式中,所述占用预设空间的内存,具体包括:根据预设的占用次数和预设的每次占用的内存大小占用所述预设空间的内存。
13.结合第一方面,在第一方面的某些实现方式中,所述当所述第三进程信息发生所述目标改动后,根据所述剩余系统可用内存、所述占用预设空间的内存的次数以及所述预设空间的大小计算所述清理内存水线,具体包括:当所述第三进程信息发生所述目标改动后,根据以下公式计算所述清理内存水线;z=k-x*a其中,z为清理内存水线对应的所述系统可用内存;k为第三进程信息发生所述目
标改动时对应的剩余系统可用内存;x为所述预设的每次占用的内存大小;a为所述预设的占用次数。
14.结合第一方面,在第一方面的某些实现方式中,所述根据所述静态内存水线和所述清理内存水线获取所述电子设备的实际系统可用内存,具体包括:根据以下公式计算所述实际系统可用内存;其中,为所述实际系统可用内存;y为所述静态内存水线对应的所述系统可用内存;z为所述清理内存水线对应的所述系统可用内存。
15.结合第一方面,在第一方面的某些实现方式中,所述方法还包括:当所述电子设备未启动所述应用时,抓取所述电子设备的内存信息,所述内存信息包括当前的所述系统可用内存;根据所述内存信息获取所述静态内存水线。
16.结合第一方面,在第一方面的某些实现方式中,所述方法还包括:根据应用下载排行榜选取下载数量最多的n个所述应用;根据所述n个所述应用构建所述第一应用序列。
17.结合第一方面,在第一方面的某些实现方式中,所述方法还包括:按照所述第二应用序列,进行多轮应用模拟操作,并获取每一轮中每一所述应用在前台运行时处于运行状态的各所述应用对应的内存信息;获取相同应用在不同轮对应的所述内存信息的第三比较结果;当所述第三比较结果指示第一应用对应的所述内存信息逐轮增加,且相邻两轮中的增加量大于第一阈值,则确定所述第一应用为风险应用。
18.结合第一方面,在第一方面的某些实现方式中,所述方法还包括:按照所述第二应用序列,进行多轮应用模拟操作,并获取每一轮中每一所述应用在前台运行时处于运行状态的各所述应用对应的进程信息;获取在不同轮中相同应用对应的所述进程信息的第四比较结果;当所述第四比较结果指示第二应用对应进程信息在每一轮中均存在且保持不变时,确定所述第二应用为风险应用。
19.第二方面,提供了一种电子设备,包括:一个或多个处理器;一个或多个存储器;所述一个或多个存储器存储有一个或多个计算机程序,所述一个或多个计算机程序包括指令,当所述指令被所述一个或多个处理器执行时,使得所述电子设备执行如上述第一方面中任一实现方式所述的方法。
20.第三方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行程序,所述计算机可执行程序在被计算机调用时,使所述计算机执行如上述第一方面或第二方面中任一实现方式所述的方法。
21.第四方面,提供了一种包含指令的计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行如上述第一方面中任一实现方式所述的方法。
附图说明
22.图1为本技术实施例提供的一种系统内存分析的方法适用的系统架构示意图。
23.图2为本技术实施例提供的一种电子设备100的结构示意图。
24.图3为本技术实施例提供的一种电子设备100的软件结构框图。
25.图4为本技术实施例提供的一种内存水线的示意图。
26.图5为本技术实施例提供的一种系统内存分析的方法的示意性流程图。
27.图6a至图6d为本技术实施例提供的一些在用户的指示下进行内存分析时可能涉及的gui示意图。
28.图7为本技术实施例提供的另一种系统内存分析的方法的示意性流程图。
29.图8为本技术实施例提供的又一种系统内存分析的方法的示意性流程图。
具体实施方式
30.需要说明的是,本技术实施例的实施方式部分使用的术语仅用于对本技术的具体实施例进行解释,而非旨在限定本技术。在本技术实施例的描述中,除非另有说明,“/”表示或的意思,例如,a/b可以表示a或b;本文中的“和/或”仅仅是一种描述关联障碍物的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,在本技术实施例的描述中,除非另有说明,“多个”是指两个或多于两个,“至少一个”、“一个或多个”是指一个、两个或两个以上。
31.以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”特征可以明示或者隐含地包括一个或者更多个该特征。
32.在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本技术的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
33.为更好地理解本技术实施例提供的系统内存分析的方法,下面先对以下实施例中的部分用于进行解释说明。
34.1.应用本技术实施例涉及的应用又可以被描述为应用程序,是能够实现某项或者多项特定功能的软件程序。通常,电子设备中可以安装一个或多个应用。比如,相机应用、邮箱应用、视频应用等。下文提及的应用,可以是电子设备出厂时已经安装的系统应用,也可以是用户在使用电子设备的过程中从网络下载或者从其他电子设备获取的第三方应用。
35.2.冷启动和热启动冷启动是指,在启动应用时,该应用之前未被启动过或者曾被启动过但又被清理了,系统中没有该应用的进程,这时系统会创建一个新的进程分配给该应用。由于冷启动方式需要系统重新加载应用所需的各种资源,因而冷启动通常启动时间较长,易导致用户等待时间长、体验不佳。
36.热启动是指,在启动应用时,系统中已有该应用的进程,例如按返回(black)键、主屏(home)键等,应用虽然会退出,但是该应用的进程还是会保留在后台。相比于应用的冷启
动,应用的热启动没有创建进程以及加载资源的过程,所以应用热启动的速度要远大于冷启动的速度,用户等待时间短,体验较好。
37.3.内存本技术实施例中的内存是指运行内存,可以等同于随机存储器(random access memory,ram)或者高速缓冲存储器(cache)等。
38.4.静态内存水线、清理内存水线本技术实施例中的静态内存水线是指电子设备未启动应用时对应的系统内存,此时电子设备不存在正常运行的系统进程之外其他进程(如应用进程等)。清理内存水线是指电子设备被触发执行应用清理时的系统剩余可用内存。静态内存水线和清理内存水线之间的内存为实际的系统可用内存,这里的系统可用内存也可以理解为用户可用内存或者应用可用内存,可以用于下载应用、运行应用进程等等。
39.结合背景技术的介绍,根据目前的应用进程查杀机制,当内存不足(如某进程存在内存泄漏,导致系统可用内存低于触发应用查杀的内存水线)时,用户关心的应用可能会在后台被清理,再次使用时则需要冷启动,导致应用启动速度慢影响用户体验。随着手机等终端产品的种类越来越多,用户在不同产品上使用应用的体验差异很大。即使具有相同内存规格的产品,由于触发应用查杀的内存水线与未运行应用进程时的内存水线之间的水线间隔(gap)(也即实际的系统可用内存)不同,应用保持热启动的能力和内存性能也会存在区别。为准确获取应用热启动能力和内存性能,就需要获取实际的系统可用内存。而获取系统可用内存的关键,则是能够准确测量触发应用查杀的清理内存水线。
40.有鉴于此,本技术实施例提供了一种系统内存分析的方法,该方法通过模拟用户实际操作应用的过程,抓取该过程中各个应用占用的内存信息以及系统的可用内存信息(memavailable)等,分析获取触发应用清理时的清理内存水线,进而获取实际的系统可用内存,以便能够对应用的热启动能力进行评估,并且为应用热启动能力的改善提供指引。
41.示例性的,如图1所示,为本技术实施例提供的一种系统内存分析的方法适用的系统架构示意图。该系统架构包括电子设备100和至少一个测试设备200。
42.在一些实施例中,电子设备100可以是多种类型,比如手机、平板电脑、可穿戴设备、车载设备、增强现实(augmented reality,ar)/虚拟现实(virtual reality,vr)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,umpc)、上网本、个人数字助理(personal digital assistant,pda)等等。电子设备的示例性实施例包括但不限于搭载ios
®
、android
®
、microsoft
®
或者其他操作系统的便携式终端。上述电子设备100也可以是具有触敏表面(例如触控面板)的台式计算机等。本技术实施例对电子设备100的具体类型不作限定。
43.在一些实施例中,电子设备100上可以安装有多个应用,比如电子设备100出厂时安装的系统应用,和/或电子设备100使用过程中从网络下载的第三方应用,如微信应用、视频应用等等。
44.在一些实施例中,测试设备200可以通过通用串行总线(universal serial bus,usb)与电子设备100通信连接。测试设备200可以用于采集电子设备100的内存信息和进程信息等。内存信息可以包括应用进程占用的内存大小;进程信息可以包括应用进程的名称和对应的进程编号pid(或称进程号)等。具体来说,当用户未操作应用时,测试设备200可以
获取电子设备100不存在应用进程时的静态内存水线;当用户按照应用序列(或称测试用例序列),通过操作测试用例模拟用户实际使用应用时,测试设备200可以动态采集在应用运行过程中的内存信息和进程信息;之后,测试设备200可以根据采集信息按照预设的分析模型获取触发清理应用时的清理内存水线。
45.此外,在进行内存水线的测试分析的过程中,一个测试设备200可以连接多个电子设备100,例如,不同厂家生产的相同类型的电子设备(如手机等),或者不同厂家生产的不同类型的电子设备(如手机、平板电脑等)等,以实现对多个电子设备100的系统可用内存进行比对分析,获取不同电子设备100的应用缓存能力和电子设备100的内存性能。可选地,在进行内存水线的测试分析的过程中,一个电子设备100也可以连接多个测试设备200,本技术实施例对此不作限定。
46.在一些可能的实施例中,该系统架构还可以包括监控设备(图1未示出),对执行内存水线测试过程的各个应用占用的内存信息等进行监测,以用于测试设备200根据多轮测试过程中应用占用的内存信息的识别异常进程。
47.示例性的,如图2所示,为本技术实施例提供的一种电子设备100的结构示意图。
48.电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,usb)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,sim)卡接口195等。其中传感器模块180可以包括压力传感器180a,陀螺仪传感器180b,气压传感器180c,磁传感器180d,加速度传感器180e,距离传感器180f,接近光传感器180g,指纹传感器180h,温度传感器180j,触摸传感器180k,环境光传感器180l,骨传导传感器180m等。
49.可以理解的是,本技术实施例示意的结构并不构成对电子设备100的具体限定。在本技术另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
50.处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,ap),调制解调处理器,图形处理器(graphics processing unit,gpu),图像信号处理器(image signal processor,isp),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,dsp),基带处理器,和/或神经网络处理器(neural-network processing unit,npu)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
51.其中,控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
52.处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
53.在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路
(inter-integrated circuit,i2c)接口,集成电路内置音频(inter-integrated circuit sound,i2s)接口,脉冲编码调制(pulse code modulation,pcm)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,uart)接口,移动产业处理器接口(mobile industry processor interface,mipi),通用输入输出(general-purpose input/output,gpio)接口,用户标识模块(subscriber identity module,sim)接口,和/或通用串行总线(universal serial bus,usb)接口等。
54.i2c接口是一种双向同步串行总线,包括一根串行数据线(serial data line,sda)和一根串行时钟线(derail clock line,scl)。在一些实施例中,处理器110可以包含多组i2c总线。处理器110可以通过不同的i2c总线接口分别耦合触摸传感器180k,充电器,闪光灯,摄像头193等。例如:处理器110可以通过i2c接口耦合触摸传感器180k,使处理器110与触摸传感器180k通过i2c总线接口通信,实现电子设备100的触摸功能。
55.i2s接口可以用于音频通信。在一些实施例中,处理器110可以包含多组i2s总线。处理器110可以通过i2s总线与音频模块170耦合,实现处理器110与音频模块170之间的通信。在一些实施例中,音频模块170可以通过i2s接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。
56.pcm接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块170与无线通信模块160可以通过pcm总线接口耦合。在一些实施例中,音频模块170也可以通过pcm接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。所述i2s接口和所述pcm接口都可以用于音频通信。
57.uart接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,uart接口通常被用于连接处理器110与无线通信模块160。例如:处理器110通过uart接口与无线通信模块160中的蓝牙模块通信,实现蓝牙功能。在一些实施例中,音频模块170可以通过uart接口向无线通信模块160传递音频信号,实现通过蓝牙耳机播放音乐的功能。
58.mipi接口可以被用于连接处理器110与显示屏194,摄像头193等外围器件。mipi接口包括摄像头串行接口(camera serial interface,csi),显示屏串行接口(display serial interface,dsi)等。在一些实施例中,处理器110和摄像头193通过csi接口通信,实现电子设备100的拍摄功能。处理器110和显示屏194通过dsi接口通信,实现电子设备100的显示功能。
59.gpio接口可以通过软件配置。gpio接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,gpio接口可以用于连接处理器110与摄像头193,显示屏194,无线通信模块160,音频模块170,传感器模块180等。gpio接口还可以被配置为i2c接口,i2s接口,uart接口,mipi接口等。
60.usb接口130是符合usb标准规范的接口,具体可以是mini usb接口,micro usb接口,usb type c接口等。usb接口130可以用于连接充电器为电子设备100充电,也可以用于电子设备100与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他终端,例如ar设备等。
61.可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本技术另一些实施例中,电子设备100也可以采用
上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
62.充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过usb接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过电子设备100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为终端供电。
63.电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏194,摄像头193,和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。
64.电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
65.移动通信模块150可以提供应用在电子设备100上的包括2g/3g/4g/5g等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,lna)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
66.调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170a,受话器170b等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
67.无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wireless local area networks,wlan)(如无线保真(wireless fidelity,wi-fi)网络),蓝牙(bluetooth,bt),全球导航卫星系统(global navigation satellite system,gnss),调频(frequency modulation,fm),近距离无线通信技术(near field communication,nfc),红外技术(infrared,ir)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
68.电子设备100通过gpu,显示屏194,以及应用处理器等实现显示功能。显示屏194用于显示图像,视频等。
69.电子设备100可以通过isp,摄像头193,视频编解码器,gpu,显示屏194以及应用处
理器等实现拍摄功能。
70.数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。视频编解码器用于对数字视频压缩或解压缩。npu为神经网络(neural-network ,nn)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。
71.外部存储器接口120可以用于连接外部存储卡,例如micro sd卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。
72.电子设备100可以通过音频模块170,扬声器170a,受话器170b,麦克风170c,耳机接口170d,以及应用处理器等实现音频功能。例如音乐播放,录音等。
73.示例性的,电子设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本发明实施例以分层架构的android系统为例,示例性说明电子设备100的软件结构。图3是本技术实施例的电子设备100的软件结构框图。
74.分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(android runtime)和系统库,以及内核层。
75.应用程序层可以包括一系列应用程序包。如图3所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,wlan,蓝牙,音乐,视频,克隆应用等应用程序。
76.应用程序框架层为应用程序层的应用程序提供应用编程接口(application programming interface,api)和编程框架。应用程序框架层包括一些预先定义的函数。如图3所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。
77.窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
78.内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
79.视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
80.电话管理器用于提供电子设备100的通信功能。例如通话状态的管理(包括接通,挂断等)。
81.资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
82.通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如
在状态栏提示文本信息,发出提示音,终端振动,指示灯闪烁等。
83.android runtime包括核心库和虚拟机。android runtime负责安卓系统的调度和管理。
84.核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
85.应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行障碍物生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
86.系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(media libraries),三维图形处理库(例如:opengl es),2d图形引擎(例如:sgl)、短距wi-fi模块等。
87.表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2d和3d图层的融合。
88.媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如: mpeg4,h.264,mp3,aac,amr,jpg,png等。
89.三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。
90.2d图形引擎是2d绘图的绘图引擎。
91.短距wi-fi模块用于在wi-fi信道上建立热点,如在2.4g信道或者5g信道上建立wi-fi热点。
92.内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。
93.为了更加清楚地理解本技术实施例提供的系统内存分析的方法,以下对静态内存水线、清理内存水线以及系统可用内存进行具体介绍。
94.示例性的,如图4所示,为本技术实施例提供的一种内存水线的示意图。
95.结合前述介绍的静态内存水线和清理内存水线的定义,以电子设备1和电子设备2为例对内存水线进行示例性介绍。示例性的,如图4所示,电子设备1对应的静态内存水线m1是6.5g,对应的清理内存水线m1是3g;电子设备2对应的静态内存水线m2是6g,对应的清理内存水线m2是2g。
96.需要说明的是,由于在未运行应用进程时,系统已经占用的内存对用户不可用,因而静态内存水线表示的系统可用内存不包括系统正常运行所占用的内存。举例来说,静态内存水线可以是电子设备被用户购买后首次开启且未启动应用时对应的系统可用内存。
97.还需要说明的是,由于系统已占用的内存(如出厂时系统已占用的内存)为用户不可用的内存,因而静态内存水线所指的系统可用内容不包括该系统已占用的内存。
98.还需要说明的是,由于不同产品对应的应用查杀规则不同,因而不同电子设备可能具有不同的清理内存水线,静态内存水线所指示的可用内存并非系统实际的可用内存。
99.在一些实施例中,系统可用内存(或称实际系统可用内存)可以根据静态内存水线和清理内存水线之间的差值获取。示例性的,可以根据以下公式(1-1)计算获取系统可用内存:
其中,为实际系统可用内存;m为静态内存水线对应的系统可用内存;m为清理内存水线对应的系统可用内存。
100.比如,对于电子设备1来说,实际系统可用内存可以表示为:;对于电子设备2来说,实际系统可用内存可以表示为:。
101.换言之,如果测试设备能够获取静态内存水线和清理内存水线,就可以依据上述方式计算获取系统可用内存。
102.在一些实施例中,测试设备获取电子设备的静态内存水线的方式可以包括:由于电子设备的系统文件记录的内存信息可以直观地指示系统可用内存,因而测试设备可以在电子设备未启动应用程序时,查询该系统文件中的内存信息,获取当前系统可用内存(也即静态内存水线)。示例性的,测试设备查询当前系统可用内存的方式可以是:通过抓取命令(如adb shell“cat/proc/meminfo”)定位至系统内存文件,然后从系统内存文件查看当前系统可用内存(如查看memavailable对应的数值)。
103.然而,对于清理内存水线来说,由于不同电子设备对应的应用查杀规则不同(比如电子设备1的应用查杀规则是当系统可用内存剩余3g时,开始清理应用;又比如,电子设备2的应用查杀规则是当系统可用内存剩余2g时,开始清理应用),电子设备的系统文件中不会明确记录清理内存水线,使得测试设备无法直观查询清理内存水线。为了实现准确获取清理内存水线,以便为改善内存性能提供指引,本技术实施例提供的系统内存分析的方法主要通过设计的清理内存水线的分析测试模型,准确获取电子设备的清理内存水线,进而获取电子设备的内存性能以及应用热启动能力。
104.示例性的,如图5所示,为本技术实施例提供的一种系统内存分析的方法的示意性流程图。该方法可以应用于测试设备,该测试设备与电子设备连接,电子设备以手机为例进行介绍。如图所示,该系统内存分析的方法可以包括以下步骤:s501,构建第一应用序列。
105.其中,应用序列又可以被描述为测试用例序列,可以是利用多个用户常用的应用组建而成的序列,应用序列中的应用又可以被描述为测试应用。为了直观获取用户体验,这里利用第一应用序列模拟用户实际使用手机时开启和/或操作应用的顺序,模拟用户实际使用应用的场景,以获取更加准确的清理内存水线。
106.在一些实施例中,构建第一应用序列的方法可以是:选取q个主流top三方应用,q为大于或等于2的整数;根据q个应用,构建第一应用序列,其中第一应用序列包括应用的数量为n,n为大于或等于q的整数。可选地,第一应用序列中各个应用的排列顺序可以随机设置。
107.其中,主流top应用的选取方式可以是通过应用下载排行榜选择排名前q的应用。例如,测试人员可以通过应用商城等中的应用下载排行榜确定下载量位于前q位的应用。举例来说,假设q为5,那么测试人员可以选取下载排行榜前5的应用,这5个主流应用例如可以是:a视频应用、新闻应用、微信应用、抖音应用、美团应用。之后,可以用这5个应用构建第一应用序列,假设第一应用序列包括的应用的数量n为100,那么可以每次从这5个应用中随机选取一个应用依次放入该第一应用序列,直至第一应用序列中应用的数量达到100个。
108.示例性的,以主流top应用包括a视频应用、新闻应用、微信应用、抖音应用、美团应用等为例,构建后的第一应用序列例如可以如下表1所示:
表1s502,测试电子设备的静态内存水线。
109.在一些实施例中,当电子设备未运行应用进程时,测试设备可以采集该电子设备的静态内存水线。示例性的,电子设备的系统文件可以记录有系统的内存信息,该内存信息包括当前系统的可用内存。测试设备查询当前系统可用内存的方式可以是:通过抓取命令(如adb shell“cat/proc/meminfo”)定位至系统内存文件,然后从系统内存文件查看当前系统可用内存(如查看memavailable对应的数值)。
110.s503,电子设备接收用户输入的目标操作,并动态获取进程信息和内存信息,该目标操作为用户按照第一应用序列中应用的排列顺序输入的操作。
111.其中,目标操作可以包括开启应用的操作以及开启后针对应用各个页面的操作,如在页面上的点击操作、滑动操作、长按操作等等。
112.在一些实施例中,用户可以按照构建的第一应用序列中的应用排列顺序,按照预设方式依次输入针对各应用的目标操作。示例性的,假设第一应用序列中应用排序顺序为表1所示,该过程可以具体包括:按照第一应用序列中的应用排列顺序,首先启动第1个应用(如上表1中的微信应用),并按照预设方式输入针对该微信应用的目标操作,操作完毕后将该微信应用切换至后台运行;之后,静置预设时长(如3min),启动第2个应用(如上表1中的a视频应用),并按照预设方式输入针对该a视频应用的目标操作,操作完毕后将其切换至后台运行;按照与前述类似的过程,直到启动第n个应用(如上表1中的新闻应用),按照预设方式输入针对该新闻应用的目标操作,操作完毕后将其切换至后台运行,并静置预设时长(如3min)。
113.在一些实施例中,将应用切换至后台运行的方式可以由多种,例如可以包括:通过点击返回主屏幕键将应用切换至后台运行;或者,通过点击返回键将应用切换至后台运行等等。本技术实施例对此不作限定。
114.需要说明的是,在针对一个应用操作完毕之后,之所以需要静置预设时长,是因为应用被操作后,需要一定时间进行内存申请和/或内存释放,静置预设时长可以使系统中的内存状态达到稳定状态。其中,这里的预设时长可以根据需要灵活设置,如设置为3~5min,本技术实施例对此不作限定。
115.在一些实施例中,操作应用的预设方式可以根据用户实际使用应用处理任务时的行为设置。示例性的,对于当前需要开启和操作应用来说,按预设方式操作的过程可以包括:接收用户在电子设备的主显示界面上针对应用图标输入的开启操作(如针对应用图标的点击操作);响应于该开启操作,电子设备显示应用首页;之后,电子设备可以接收用户在该应用首页界面上的滑动操作(如向上滑动、向下滑动、向左滑动、向右滑动中的一种或多种),该滑动操作可以持续第一预设时长;之后,电子设备可以接收用户在应用首页界面上输入的页面切换操作(如针对第一页面指示符的点击操作);响应于该页面切换操作,电子设备可以显示第一页面,并且可以接收用户在该第一页面上进行的第一特定操作(如点击操作、滑动操作等中的一种或多种),针对该第一页面的第一特定操作可以持续第二预设时长;之后,电子设备可以接收用户在该第一页面上输入的切换至第二页面的操作(如针对第“dumpsys meminfo”)定位至系统中存储进程信息的文件,然后从该文件中获取应用进程对应的应用名称、进程号(pid)、应用进程占用的内存等信息。
121.示例性的,在不同应用被操作的过程中,测试设备动态获取的不同应用对应的pid和进程分别占用的内存可以如表2所示,其中,不同pid可以对应不同的应用:表2上述表2中,用户操作第1个应用时所抓取的pid 1对应的内存信息(也即上表第二行展示的信息)可以从文件1中获取;操作第2个应用时所抓取的pid 1和pid 2分别对应的内存信息(也即上表第三行展示的信息)可以从文件2中获取;类似地,操作第i个应用时所抓取的pid 1至pid i分别对应的内存信息(也即上表第i+1行展示的信息)可以从文件i中获取;操作第n个应用时所抓取的pid 1至pid n分别对应的内存信息(也即上表第n+1行展示的信息)可以从文件n中获取。
122.需要说明的是,上述描述的不同应用所对应的pid,以及进程占用的内存大小仅为示例,本技术实施例对此不作限定。
123.还需要说明的是,在该步骤中,也可以仅抓取进程信息而不抓取内存信息,本技术实施例对此不作限定。
124.s504,比较操作不同应用时所获取的进程信息,确定在操作第n个应用时,系统发生清理应用的行为。
125.在一些实施例中,根据步骤s503获取的应用的进程信息,测试设备可以对不同文件所记录的进程信息进行比较;如果比较结果指示在最新读取的文件中,进程信息与之前读取的文件中的进程信息一致,那么可以确定系统未发生清理应用的行为;而如果比较结果指示在最新读取的文件中,进程信息与之前读取的文件中的进程信息不一致,那么可以确定系统发生了清理应用的行为。示例性的,比如操作第n个应用时,抓取的进程信息记录在文件n中,如果读取到的文件n记录的前(n-1)个进程信息与文件n-1记录的进程信息不一致,那么可以确定在操作第n个应用时,系统发生了清理应用的行为。
126.其中,上述所说的进程信息一致可以包括:最新读取的文件n中的前n-1个应用与之前读取的文件n-1中的n-1个应用的应用进程名称相同,且应用进程对应的进程编号相同。其中,文件n-1包括用户操作第n-1个应用时抓取的进程信息和内存信息,文件n包括用户操作第n个应用时抓取的进程信息和内存信息。
127.其中,上述所说的进程信息不一致可以包括以下情形:情形(1),某一应用进程对应的pid在之前读取的文件中存在,但在最新读取的文件n中缺失;情形(2),相比于之前文件中的记录,在最新读取的文件n中,同一应用进程对应的pid编号发生变化。
128.例如,针对情形(1),假设文件n-1中记录的第p个应用的进程信息包括应用进程名
称(如应用p)和应用进程对应的pid(记为pidp),而最新读取的文件n中记录的前n-1个应用中不存在该应用进程及其对应的pid p,则可以确定此时系统对应用p进行了清理行为,对应进程信息不再存在。
129.又例如,针对情形(2),之前读取的文件n-1中记录的进程信息为:第1个应用对应的进程编号为pid 1,第2个应用对应的进程编号为pid 2,
……
,第i个应用对应的进程编号为pid i,
……
,第n-1个应用对应的进程编号为pid n-1,而最新读取的文件n中记录的第i个应用对应的进程编号为pid m(m和i不相同),则此时的情形可能为系统对第i个应用进行过清理行为,但后续又建立了该应用的进程,为该应用分配了新的进程编号(也即有应用清理行为发生过,当前剩余系统可用内存与清理内存水线很接近)。
130.示例性的,对进程信息进行比较的过程可以包括:测试设备可以从文件1读取操作第1个应用时对应的进程信息(如应用进程名称(如应用1)和应用进程对应的进程编号(如pid 1)),再从文件2读取操作第2个应用时对应的进程信息(如应用进程名称(如应用2)和应用进程对应的进程编号(如pid 1和pid 2)),之后比较文件1中的进程和文件2中前(2-1)个应用的进程信息,如果一致(如应用进程对应的进程编号均为pid 1),那么可以确定在运行第2个应用时,系统未发生清理应用的行为。之后,可以再从文件3读取操作第3个应用时对应的进程信息(如应用进程名称和应用进程分别对应的进程编号(如pid 1,pid 2和pid3)),比较文件2中的进程信息和文件3中的前(3-1)个应用的进程信息,如果一致(如应用1和应用2进程分别对应的进程编号均为pid 1,pid 2),那么可以确定在运行第3个应用时,系统未发生清理应用的行为。按照类似的过程,依次可以从文件i(此时,3<i<n-1)中读取操作第i个应用时对应的进程信息(如应用名称和应用进程分别对应的进程编号(如pid 1,pid 2,

,pid i)),然后比较文件i中的前(i-1)个进程信息和文件i-1中的进程信息,如果一致(如应用1至应用i-1进程分别对应的进程编号均为pid 1,pid 2,

,pid i-1),那么可以确定在运行第i个应用时,系统未发生清理应用的行为。按照类似的过程,直至从文件n中读取操作第n个应用时对应的进程信息,然后比较文件n中的前(n-1)个进程信息和文件n-1中的进程信息,如果不一致(比如文件n的前(n-1)个进程信息中缺少某个或某些应用进程对应的进程编号;或者,文件n的进程信息中某一应用进程对应的进程编号发生变化),那么可以确定在运行第n个应用时,系统发生了清理应用的行为。示例性的,不同文件记录的进程信息例如可以如表3所示:表3
其中,表3中的应用1、应用2等分别为第1个应用、第2个应用分别对应的应用进程的名称。
131.结合上表示出的不同文件包括的进程信息可以看出,当操作第n-1个应用时,进程信息应用2对应的进程编号为pid 2;而当操作第n个应用时对应的进程信息中应用2对应的进程编号变为pid m(m不等于2),这也就意味着在操作第n个应用时,应用2被分配了新的进程编号,应用2对应的应用进程属于被清理过又重新启动的情形。换言之,也就是说在操作第n-1个应用到操作第n个应用期间,剩余的系统可用内存曾达到清理内存水线,触发了系统清理应用的行为。
132.需要说明的是,本技术实施例为了便于描述,以在操作应用序列中的第n个应用时确定系统发生应用清理行为为例进行介绍,但在实际应用中并不仅限于这一种情形,比如,可以在n个应用中的任一个(如第n个,n为小于或等于n的正整数)被操作时,系统发生应用清理,本技术实施例对此不作限定。
133.还需要说明的是,为了保证系统发生应用清理时所对应的已操作应用数量的准确性,该步骤s504可以进行多轮。
134.当系统发生应用查杀行为时,意味着系统内存达到了清理内存水线,内存能力已经达到上限。此时,为了准确地获取清理内存水线,可以执行以下步骤s505:
s505,根据n个应用构建第二应用序列,按照预设模型获取清理内存水线。
135.为便于理解,以下用字母y表示静态内存水线,用字母z表示清理内存水线,且假设静态内存水线y=t mb。
136.在一些实施例中,根据n个应用构建第二应用序列,具体可以指根据第一应用序列中的前n-1个应用构建第二应用序列。
137.需要说明的是,这里仍以在操作第一应用序列中的第n个应用时确定系统发生应用清理行为为例进行介绍。但本技术实施例并不仅限于此,当在操作第一应用序列中的第n个应用时确定系统发生应用清理行为时,这里还可以根据第一应用序列中的前n-1个应用构建第二应用序列。
138.在一些实施例中,当根据步骤s504获取系统发生应用清理行为,用户已经操作的应用的数量是n时,可以取该n个应用中的前n-1个应用,形成第二应用序列。然后,依次启动并按照预设方式操作第二应用序列中的应用,直到第二应用序列中的应用均被操作完毕,并且在操作第二应用序列中应用的过程中,测试设备还可以动态读取各个应用对应的内存信息和进程信息。其中,对应用启动,以及按照预设方式操作应用的过程可以参见上述步骤s503中的介绍;获取应用对应的内存信息和进程信息的过程可以参见上述步骤s504中的介绍,此处不再赘述。
139.需要说明的是,由于当第n个应用被启动或操作时,触发系统进行应用清理,因此,当仅仅有前n-1个应用被启动和操作时,这n-1个应用均能处于保活状态,也即此时的剩余的系统可用内存还未达到清理内存水线,系统不会对应用进行清理。
140.在一些实施例中,当n-1个应用被操作完毕之后,测试设备可以读取电子设备此时的系统可用内存,假设此时系统可用内存为k mb,且k≥z。之后,可以通过逐步占用内存的方式,获取系统发生应用清理行为时的系统可用内存作为清理内存水线。
141.具体地,在一种实现方式中,通过逐步占用内存的方式获取清理内存水线的过程可以包括:通过吃内存工具等依次占用预设大小(记为x mb)的可用内存;在每占用一次预设大小的可用内存之后,静置预设时长(如3min);然后基于已获取的n-1个应用分别对应的内存信息和进程信息,判断系统是否发生清理应用的行为;如果在第a次占用预设大小的可用内存后,检测到系统发生清理应用的行为,则可以根据操作完毕n-1个应用之后的剩余系统可用内存k、以及被占用(或吃掉)的总内存大小(x*a)计算清理内存水线z,具体地,该清理内存水线可以根据以下公式(1-2)计算获得:z=k-x*a
ꢀꢀ
(1-2)其中,每次占用的内存的大小x可以根据需求灵活设置,比如可以设置为10mb,本技术实施例对此不做限定。
142.在一些实施例中,通过吃内存工具占用预设大小的可用内存的原理可以包括:脚本中利用malloc(num)向系统申请num字节的动态内存,然后编译成可执行文件,预留几个参数,文件名是pressure。具体使用方式可以包括:(1)先将该文件push到电子设备内(adb push pressure /data/local/tmp/,再为该文件添加可执行权限(adb shell
ꢀ“
chmod +x /data/local/tmp/pressure”);(2)adb shell进入/data/local/tmp/下面,例如执行./pressure pnums 1 mem 10,即代表开启一个进程,占用内存为10mb(即吃掉10mb的系统可用内存)。
143.s506,根据静态内存水线和清理内存水线,获取电子设备的实际系统可用内存。
144.在一些实施例中,当根据前述步骤获取静态内存水线和清理内存水线后,可以根据图4实施例所介绍的计算方式获取电子设备的实际系统可用内存。具体地,该系统可用内存可以根据以下公式(1-3)计算获得:
ꢀꢀꢀꢀ
(1-3)其中,y为静态内存水线对应的系统可用内存;z为清理内存水线对应的系统可用内存。
145.根据本技术实施例提供的系统内存分析的方法,通过按照应用序列以预设方式依次操作应用模拟用户实际使用应用的过程,并根据该过程中的内存信息和进程信息计算触发应用查杀的内存水线,获取系统可用内存,并将系统可用内存作为电子设备的系统内存能力和应用的热启动能力的等效衡量,能够评估用户使用体验,以及为系统内存性能的改善提供指引。
146.当图5实施例介绍的流程进行多轮时,通过对多轮测试获取的应用内存信息的比对,还可以识别具有较大内存泄露风险的异常应用进程。以下结合图5以及图6a至图6d,对利用检测清理内存水线过程中获取的多轮内存信息识别异常应用进程的过程进行介绍。
147.在另一些实施例中,本技术实施例提供的系统内存分析的方法也可以在用户使用电子设备时,由电子设备执行。其中,触发电子设备执行该应用内存分析过程的方式可以有多种,比如,电子设备可以周期性地自动进行内存分析;又比如,电子设备可以在用户的指示下,进行内存分析。
148.示例性的,如图6a至图6d所示,为本技术实施例提供的一些在用户的指示下进行内存分析时可能涉及的gui示意图。这里以电子设备是手机为例进行介绍。
149.如图6a所示,为手机的主屏幕界面示意图。在该界面的上方可以显示有状态栏10,该状态栏10可以包括:移动通信信号(或称蜂窝信号)的一个或多个信号强度指示符、无线高保真(wireless fidelity,wi-fi)信号的一个或多个信号强度指示符,手机的电量指示符,时间指示符等。该主屏幕界面还可以包括应用图标显示区域20,用于显示多种类型的应用程序图标,如时钟图标、日历图标、图库图标、备忘录图标、文件管理图标、电子邮件图标、音乐图标、计算器图标、录音机图标、运动健康图标、天气图标、浏览器图标、智慧管家图标、设置图标等。多个应用程序图标下方可以有页面指示符显示区域30,该区域包括的页面指示符用于表明当前显示的页面与其他页面的位置关系。页面指示符的下方可以显示有托盘应用图标显示区域40,用于显示多个托盘应用图标,例如相机应用图标、通讯录应用图标、电话拨号应用图标、信息应用图标等。在另一些实施例中,手机主屏幕界面可以包括比图示更多或更少的应用程序图标或托盘应用图标,本技术对此不作限定。
150.在一些实施例中,手机可以接收用户针对设置应用图标的点击操作601。响应于用户的点击操作,手机可以显示如图6b所示的设置应用界面。
151.图6b中的界面为设置列表界面,该设置列表可以包括多项用户能够操作的选项,例如包括无线和网络、蓝牙、桌面和壁纸、显示、声音、应用程序管理、电池、内存分析、健康使用手机、安全和隐私等。应理解,在一些实施例中,该界面可以包括比图6b所示更多或更少的选项或与图6b中类型不同的选项,本技术实施例对此不作限定。
152.如图6b所示,用户可以点击内存分析选项,响应于用户的点击操作,手机可以显示
如图6c所示的内存分析界面。如图6c所示,在该内存分析界面可以包括内存性能检测的开关控件,并且在该内存性能检测栏的下方还可以显示针对该内存性能检测的说明,例如“开启内存性能检测功能后,能够对手机的可用内存进行检测分析,使用户更加了解手机当前的可用内存,合理安排使用内存”。示例性的,在该内存分析界面还可以显示异常应用识别开关控件,并且在异常应用识别管理栏的下方还可以显示针对该异常应用识别的说明,例如“开启异常应用识别功能后,在进行可用检测时,能够对可能的风险应用进程进行识别”。
153.在一些实施例中,用户可以点击开启异常应用识别的开关控件,使得手机在可用内存检测的过程中,可以根据不同应用占用的内存信息分析异常应用进程。之后,若手机检测到异常应用进程,则手机可以显示如图6d所示的提醒界面。示例性的,该提醒界面可以显示系统提示信息,该系统提示信息例如可以是“识别到可能存在风险应用进程异常占用内存,是否进行查杀”。
154.若用户点击确定,则手机响应于用户的操作,可以对异常应用进程进行查杀;若用户点击取消,则手机响应于用户的操作,无需对异常应用进程进行查杀。其中,当手机对异常应用进程查杀完成后,还可以向用户显示异常应用进程查杀完毕的提示信息。
155.需要说明的是,上述介绍的gui界面仅为示例,在实际应用中,gui界面还可以呈现为其它形式,本技术实施例对此不作限定。
156.示例性的,如图7所示,为本技术实施例提供的另一种系统内存分析的方法的示意性流程图。该方法的执行主体可以包括电子设备和测试设备,具体可以包括以下步骤:s701,获取多轮内存水线测试过程中不同应用分别对应的内存信息。
157.在一些实施例中,电子设备在用户按照第一应用序列启动和操作测试时,可以记录每一应用所占用的内存信息。示例性的,当用户按照第一应用序列进行多轮应用启动和操作测试时,在每一轮内存水线测试时,不同应用所占用的内存信息可以如下表4所示:表4
s702,比对每一应用在不同测试过程中的内存信息。
158.在一些实施例中,测试设备可以采集在每一轮启动和操作应用过程中,不同应用对应的内存信息。之后,可以通过比对多轮测试过程中的应用占用内存,识别内存有明显上涨趋势且大小超过预设阈值的应用。
159.s703,当某一应用在不同测试过程中占用的内存空间变化量大于预设阈值时,确定该应用为风险应用。
160.其中,预设阈值可以根据经验和一般水平灵活设定,比如可以设定为800m,本技术实施例对此不作限定。
161.示例性的,本技术实施例所说的风险应用可以包括:存在发生内存泄露风险的应用或者存在发生被恶意保护风险的应用(不会被清理的应用)。
162.在一些实施例中,如果检测到在不同轮次的测试过程中,某一应用进程所占用的内存呈上升趋势,并且增长量大于预设阈值,那么可以确定该应用进程存在发生内存泄露的风险。在另一些实施例中,如果检测到在不同轮次的测试过程中,某一应用进程始终存在且其pid号始终未变动,那么可以确定该应用进程存在被恶意保护的风险。
163.针对发生内存泄露的异常应用进程,举例来说,以表4所示的应用占用内存信息为例,其中,应用com.xxx.xxx3在4轮测试中所占用的内存信息分别为:220412、326957、418421、682171、940448,通过比较每一轮测试过程中,该应用所占的内存,可以得出该应用占用的内存持续上涨,并且每一轮所占用的内存增加量大于预设阈值。这说明该应用可能存在内存泄露。
164.在一些实施例中,针对在不同轮次测试过程中,内存信息异常的应用进程,测试设
备可以抓取该应用对应的更加详细的内存信息(如native内存、heap内存、prof文件等),根据内存异常点的详细组成,分析内存膨胀的原因。示例性的,测试设备抓取应用更详细的内存信息的方式可以包括:如利用monkey等手段进行长时间压力测试和应用的内存采样,在测试过程中应用占用内存的峰值处抓取对应的内存信息。
165.作为一个示例,抓取某一应用进程的native内存的过程可以包括:利用abd shell“dumpsys meminfo xx”(xx表示具体进程的名称)命令定位至对应的内存文件,然后根据内存文件记录的信息获取该进程的native/heap内存信息。
166.作为另一个示例,抓取某一应用进程的showmap详细信息的过程可以包括:利用abd shell
ꢀ“
showmap-a pidx”命令定位至对应的内存文件,然后根据内存文件记录的信息获取该进程的showmap详细信息。
167.作为又一个示例,抓取某一应用进程的prof文件的过程可以包括:利用abd shell
ꢀ“
dumpheap xxx
”ꢀ
(xxx表示具体进程名称)定位至对应的内存文件,然后再利用hprof-conv.exe将prof文件转换成phrof文件。
168.上述抓取内存文件的过程仅为示例。在一些实施例中,在抓取上述应用进程对应的内存信息后,可以用于对内存泄露的原因进行分析。示例性的,内存泄露的原因例如可以包括:无效内存信息未及时销毁、进程占用的内存资源未及时释放等等。
169.针对存在被恶意保护风险的异常应用进程,在一些实施例中,测试设备可以采集在每一轮启动和操作应用过程中对应的进程信息,如果某一应用进程始终存在且其对应的pid号始终未变动,那么可以确定该应用可能是被恶意保护的异常应用进程。示例性的,当用户按照第一应用序列进行多轮应用启动和操作测试时,在每一轮内存水线测试时,不同应用所占用的内存信息可以如下表5所示:表5
其中,应用com.xxx.xxx3、com.xxx.xxx5和com.xxx.xxx10在每一轮清理内存水线的测试过程中,这些应用的进程始终存在且其对应的pid号始终未变动,意味着这几个应用可能是被恶意被保护的应用。
170.需要说明的是,本技术实施例所说的被保护的应用可以指被恶意保护的应用或者也可以指在软件逻辑上设定的保护,使得应用不被清理。
171.在一些实施例中,针对此类被保护的应用,可通过monkey等手段进行长时间压力测试和内存采样,并采集其进程优先级及其组件信息;然后,根据应用进程的优先级及其组件信息、系统可用内存接近清理内存水线附近的采样信息,确认此应用不能被清理以释放内存的原因。
172.在另一些实施例中,还可以根据应用占用的内存信息和应用的设置信息,检测是否有保护特定应用不被清理的行为(如游戏保护等)。
173.通过识别存在内存泄露风险的应用进程,或者存在被恶意保护风险的应用进程,能够为异常应用的检测和处理提供参考,便于为内存性能的改进提供指引。
174.根据本技术实施例提供的系统内存分析的方法,通过根据在测试内存水线的过程,根据各个应用在不同测试轮次占用的内存信息,通过多轮比对,可以识别出有较大风险或异常的应用进程,以便为风险应用的进一步检测和处理提供指引,从而改善设备的内存性能。
175.示例性的,如图8所示,为本技术实施例提供的另一种系统内存分析的方法的示意性流程图。该方法的执行主体例如可以是测试设备,具体可以包括以下步骤:
s801,获取电子设备的静态内存水线,该静态内存水线为电子设备未启动应用时对应的系统可用内存。
176.在一些实施例中,获取电子设备的静态内存水线的过程可以包括:当电子设备未启动应用时,抓取电子设备的内存信息,该内存信息包括当前的系统可用内存;之后,根据内存信息获取静态内存水线。
177.具体地,测试设备可以通过抓取命令(如adb shell“cat/proc/meminfo”)定位至系统内存文件,然后从系统内存文件查看当前系统可用内存(如查看memavailable对应的数值)。
178.s802,获取电子设备的清理内存水线,该清理内存水线为系统被触发发生清理应用的行为时对应的系统可用内存。
179.在一些实施例中,可以通过模拟用户实际使用应用的操作行为,并在该过程中抓取操作不同应用时对应的进程信息和内存信息获取电子设备的清理内存水线。
180.在一些实施例中,可以根据使用率或者下载率,选取最被用户常用的top主流应用作为应用。例如,可以从应用下载排行榜选取下载数量最多的q个应用;之后,根据该q个应用构建第一应用序列,n为大于或等于2的整数。
181.其中,第一应用序列例如可以对应于上述图5实施例中所说的第一应用序列,该第一应用序列包括的应用(或称测试用例)例如可以如表1所示。
182.在一些实施例中,获取电子设备的清理内存水线的过程,可以具体包括:当电子设备依次在前台运行第一应用序列中的每一应用时,分别获取当前处于运行状态中的各应用分别对应的进程信息;根据所进程信息获取电子设备的清理内存水线。
183.示例性的,当电子设备在前台运行第一应用序列中的第i个应用时,获取当前处于运行状态中的各应用对应的第一进程信息,i依次为1,
……
,n;获取第i+1个应用在前台运行时对应的第一进程信息与第i个应用在前台运行时对应的第一进程信息的比较结果;当比较结果指示第n个应用在前台运行时对应的第一进程信息发生目标改变时,获取第一应用序列中前n-1个所述应用占用的第一系统内存,n为小于或等于n的正整数;然后,根据第一系统内存获取所述清理内存水线。
184.其中,第一进程信息是指用户按照第一应用序列操作应用的过程中,测试设备抓取的进程信息。该第一进程信息可以存储在不同文件中,比如,用户操作第一应用序列中的第1个应用时,测试设备抓取并存储至文件1中的进程信息(包括第1个应用对应的应用进程的名称以及应用进程对应的进程号等);或者,用户操作第一应用序列中的第2个应用时,测试设备抓取并存储至文件2中的进程信息(包括第1个应用对应的应用进程的名称以及应用进程对应的进程号,和第2个应用对应的应用进程的名称以及应用进程对应的进程号等)等等。换言之,这里的第一进程信息可以对应于上述步骤s503中介绍的文件1、文件2、
……
、文件n中的进程信息。
185.在一些实施例中,当电子设备在前台运行第一应用序列中的第i个应用时,获取当前处于运行状态中的各应用对应的第一进程信息,i依次为1,
……
,n,具体过程可以对应于上述步骤s503,具体介绍可以参见上文相关内容,此处不再赘述。
186.在一些实施例中,获取系统发生清理应用的行为的方式可以包括:比较第一应用序列中相邻应用对应的进程信息,如果最新读取的进程信息相对于前一次读取的进程信息
发生目标变化,那么可以确定系统发生清理应用的行为。其中,以第i+1个应用对应的第一进程信息发生目标变化为例,可以包括:前i个应用中,至少一个已启动的应用对应的进程信息缺失;或者,前i个应用中,至少一个应用的应用进程对应的进程号发生改变。
187.在一些实施例中,当比较结果指示所述第n个应用在前台运行时对应的第一进程信息发生目标改变时,获取第一应用序列中前n-1个应用的应用进程占用的第一系统内存,可以具体包括:根据第一应用序列中的前n-1个应用构建第二应用序列;当电子设备在前台运行第p个应用时,分别获取对应的第二进程信息和内存信息,该第p个应用为第二应用序列中的应用,p依次为1,2,
……
,n-1;根据第二进程信息和内存信息获取第一应用序列中前n-1个应用占用的第一系统内存。
188.其中,获取前n-1个应用的应用进程占用的第一系统内存的过程可以参见上述步骤s505中的介绍,此处不再赘述。
189.在一些实施例中,根据第一系统内存获取所述清理内存水线,具体包括:计算静态内存水线和第一系统内存的差值,获取剩余系统可用内存;占用预设空间的内存,并且占用之后获取n-1个应用对应的第三进程信息;获取第三进程信息与电子设备在前台运行第n-1个应用时对应的第二进程信息的第二比较结果;当第二比较结果第三进程信息发生目标改动后,根据剩余系统可用内存、占用预设空间的内存的次数以及预设空间的大小计算所述清理内存水线。
190.其中,占用预设空间的内存的过程可以包括:通过吃内存工具等依次占用预设大小(记为x mb)的可用内存。预设空间的内存的大小可以通过占用次数(记为a)和每次占用的内存大小来计算。
191.在一些实施例中,当第三进程信息发生所述目标改动后,根据剩余系统可用内存、占用预设空间的内存的次数以及预设空间的大小计算所述清理内存水线,具体包括:当第三进程信息发生目标改动后,根据以下公式(1-2)计算清理内存水线:z=k-x*a(1-2)其中,z为清理内存水线对应的所述系统可用内存;k为第二应用序列被操作完毕之后对应的剩余系统可用内存;x为每次占用的内存大小;a为占用次数。
192.s803,根据静态内存水线和清理内存水线获取电子设备的实际系统可用内存。
193.在一些实施例中,根据静态内存水线和清理内存水线获取电子设备的实际系统可用内存,具体包括:根据以下公式(1-3)计算实际系统可用内存;(1-3)其中,为实际系统可用内存,y为静态内存水线对应的所述系统可用内存;z为清理内存水线对应的系统可用内存。
194.在一些实施例中,可以按照第二应用序列,进行多轮应用模拟操作,并获取每一轮中每一应用在前台运行时处于运行状态的各应用对应的内存信息;获取在不同轮中相同应用对应的内存信息的第三比较结果;当第三比较结果指示第一应用对应的内存信息逐轮增加,且相邻两轮中的增加量大于第一阈值,则确定第一应用为风险应用;或者,可以按照第二应用序列,进行多轮应用模拟操作,并获取每一轮中每一应用在前台运行时处于运行状态的各应用对应的进程信息;获取在不同轮中相同应用对应的进程信息的第四比较结果;当第四比较结果指示第二应用对应进程信息在每一轮中均存在且
保持不变,则确定第二应用为风险应用。
195.其中,获取风险应用的过程可以参见上述图7实施例中的具体介绍,此处不再赘述。
196.根据本技术实施例提供的系统内存分析的方法,通过按照应用序列以预设方式依次操作应用模拟用户实际使用应用的过程,并根据该过程中的内存信息和进程信息计算触发应用查杀的内存水线,获取系统可用内存,并将系统可用内存作为电子设备的系统内存能力和应用的热启动能力的等效衡量,能够评估用户使用体验,以及为系统内存性能的改善提供指引。
197.基于同样的技术构思,本技术实施例还提供了一种电子设备,包括:显示器;一个或多个处理器;一个或多个存储器;所述一个或多个存储器存储有一个或多个计算机程序,所述一个或多个计算机程序包括指令,当所述指令被所述一个或多个处理器执行时,使得所述电子设备执行上述任一个方法中的一个或多个步骤。
198.基于同样的技术构思,本技术实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机或处理器上运行时,使得计算机或处理器执行上述任一个方法中的一个或多个步骤。
199.基于同样的技术构思,本技术实施例还提供了一种包含指令的计算机程序产品。当该计算机程序产品在计算机或处理器上运行时,使得计算机或处理器执行上述任一个方法中的一个或多个步骤。
200.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者通过所述计算机可读存储介质进行传输。所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如,固态硬盘(solid state disk,ssd))等。
201.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,该流程可以由计算机程序来指令相关的硬件完成,该程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。而前述的存储介质包括:rom或随机存储记忆体ram、磁碟或者光盘等各种可存储程序代码的介质。
202.以上所述,仅为本技术实施例的具体实施方式,但本技术实施例的保护范围并不局限于此,任何在本技术实施例揭露的技术范围内的变化或替换,都应涵盖在本技术实施例的保护范围之内。因此,本技术实施例的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1