CN111966491B - 统计占用内存的方法及终端设备 - Google Patents
统计占用内存的方法及终端设备 Download PDFInfo
- Publication number
- CN111966491B CN111966491B CN202010771880.8A CN202010771880A CN111966491B CN 111966491 B CN111966491 B CN 111966491B CN 202010771880 A CN202010771880 A CN 202010771880A CN 111966491 B CN111966491 B CN 111966491B
- Authority
- CN
- China
- Prior art keywords
- identifier
- memory
- occupied
- kernel layer
- occupied 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4434—Reducing the memory space required by the program code
Abstract
本发明实施例公开了一种统计占用内存的方法及终端设备,以及计算机可读存储介质,用于降低获取待读取应用程序对应的占用内存的耗时。本发明实施例应用于安卓系统的终端设备,所述安卓系统包括安卓层和内核层,可以包括:通过所述安卓层获取读取请求,所述读取请求包括待读取应用程序对应的第一标识;控制所述安卓层调用访问接口,并通过所述访问接口向所述内核层传输所述第一标识;通过所述内核层统计所述第一标识对应的占用内存,并将所述第一标识对应的占用内存返回所述安卓层。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种统计占用内存的方法及终端设备,以及计算机可读存储介质。
背景技术
安卓(Android)系统的终端设备目前统计各个应用程序(Application,App)占用的内存的方式,是通过遍历每个应用程序所有进程的内存文件,例如smaps/statm/status等。以dumpsys meminfo为例进行说明:一个应用程序对应着多个进程,Android系统要遍历并读取各个进程的smaps文件;其中,一个进程中,申请的每一段内存都对应着smaps的一个区域值,Android需要将一个进程对应所有的区域值进行算术运算才能得出一个进程占用的内存;接着将该应用程序对应的所有进程的smaps计算结果加起来就得到一个应用程序的内存占用;如果要统计N个应用程序,就需要重复上面的操作N次。示例性的,通过计算一个进程的内存占用获取时间刻度为几十ms,如果统计全部应用程序的内存,那么,耗时就会比较长。
发明内容
本发明实施例提供了一种统计占用内存的方法及终端设备,以及计算机可读存储介质,用于降低获取待读取应用程序对应的占用内存的耗时。
有鉴于此,本发明第一方面提供一种统计占用内存的方法,所述方法应用于安卓系统的终端设备,所述安卓系统包括安卓层和内核层,所述方法可以包括:
通过所述安卓层获取读取请求,所述读取请求包括待读取应用程序对应的第一标识;
控制所述安卓层调用访问接口,并通过所述访问接口向所述内核层传输所述第一标识;
通过所述内核层统计所述第一标识对应的占用内存,并将所述第一标识对应的占用内存返回所述安卓层。
本发明第二方面提供一种终端设备,所述终端设备应用于安卓系统的终端设备,所述安卓系统包括安卓层和内核层,可以包括:
获取模块,用于通过所述安卓层获取读取请求,所述读取请求包括待读取应用程序对应的第一标识;
处理模块,用于控制所述安卓层调用访问接口,并通过所述访问接口向所述内核层传输所述第一标识;通过所述内核层统计所述第一标识对应的占用内存,并将所述第一标识对应的占用内存返回所述安卓层。
本发明实施例第三方面提供了一种终端设备,可以包括:
存储有可执行程序代码的存储器;
与所述存储器耦合的处理器;
所述处理器调用所述存储器中存储的所述可执行程序代码,用于执行如本发明实施例第一方面所述的方法。
本发明实施例第四方面提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如本发明实施例第一方面所述的方法。
本发明实施例第五方面公开一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行本发明实施例第一方面所述的方法。
本发明实施例第六方面公开一种应用发布平台,所述应用发布平台用于发布计算机程序产品,其中,当所述计算机程序产品在计算机上运行时,使得所述计算机执行本发明实施例第一方面所述的方法。
从以上技术方案可以看出,本发明实施例具有以下优点:
在本发明实施例中,提供了一种统计占用内存的方法,所述方法应用于安卓系统的终端设备,所述安卓系统包括安卓层和内核层,所述方法可以包括:通过所述安卓层获取读取请求,所述读取请求包括待读取应用程序对应的第一标识;控制所述安卓层调用访问接口,并通过所述访问接口向所述内核层传输所述第一标识;通过所述内核层统计所述第一标识对应的占用内存,并将所述第一标识对应的占用内存返回所述安卓层。即通过安卓层获取读取请求后,可以控制安卓层调用访问接口将待读取应用程序的第一标识传输给内核层,并通过内核层统计待读取应用程序的第一标识对应的占用内存,再返回给安卓层。所以,相对于现有技术是安卓层通过与待统计进程的各个访问接口,访问各个内存文件来说,本发明实施例中是通过内核层获取待读取应用程序对应的第一标识对应的占用内存,因为内核层本身有保存各个进程不同内存类型的占用内存信息,所以,内核层获取第一标识对应的占用内存相对于现有技术来说,耗时会短一些,内核层获取该第一标识对应的占用内存之后,再通过该访问接口返回给安卓层。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例和现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,还可以根据这些附图获得其它的附图。
图1为本发明实施例中统计占用内存的方法的一个实施例示意图;
图2为本发明实施例中终端设备通过安卓层设置待读取应用程序的UID范围的一个示意图;
图3为本发明实施例中为本发明实施例中统计占用内存的方法的一个流程示意图;
图4为本发明实施例中统计占用内存的方法的另一个实施例示意图;
图5是本发明实施例的终端设备的软件结构框图;
图6为本发明实施例中终端设备的另一个实施例示意图;
图7为本发明实施例中终端设备的另一个实施例示意图。
具体实施方式
本发明实施例提供了一种统计占用内存的方法及终端设备,以及计算机可读存储介质,用于降低获取待读取应用程序对应的占用内存的耗时。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,都应当属于本发明保护的范围。
在现有的技术方案中,中央处理器(central processing unit,CPU)的占用和耗时,以内存文件dumpsys meminfo为例进行说明,统计一个应用程序占用内存的时间需要包括:
每个进程的内存文件的打开时间;
读取内存文件的时间;
计算内存的时间。
可以看出,每次计算一个应用程序的内存,就需要遍历该应用程序对应多个进程的文件,重复多次流程:打开、读取、关闭等操作,操作繁琐且耗时间。
可以理解的是,本发明实施例中所涉及的终端设备可以包括一般的手持电子终端,诸如手机、智能电话、便携式终端、终端、个人数字助理(Personal Digital Assistant,PDA)、便携式多媒体播放器(Personal Media Player,PMP)装置、笔记本电脑、笔记本(NotePad)、无线宽带(Wireless Broadband,Wibro)终端、平板电脑(personal computer,PC)、智能PC、POS(Point of Sales,销售终端)和车载电脑等。
终端设备也可以包括可穿戴设备。可穿戴设备即可以直接穿戴在用户身上,或是整合到用户的衣服或配件的一种便携式电子设备。可穿戴设备不仅仅是一种硬件设备,更可以通过软件支持以及数据交互、云端交互来实现强大的智能功能,比如:计算功能、定位功能、报警功能,同时还可以连接手机及各类终端。可穿戴设备可以包括但不限于以手腕为支撑的watch类(比如手表、手腕等产品),以脚为支撑的shoes类(比如鞋、袜子或者其他腿上佩戴产品),以头部为支撑的Glass类(比如眼镜、头盔、头带等)以及智能服装,书包、拐杖、配饰等各类非主流产品形态。
下面以实施例的方式,对本发明技术方案做进一步的说明,如图1所示,为本发明实施例中统计占用内存的方法的一个实施例示意图,所述方法应用于安卓系统的终端设备,所述安卓系统包括安卓层和内核层,所述方法可以包括:
101、通过所述安卓层获取读取请求,所述读取请求包括待读取应用程序对应的第一标识。
可以理解的是,安卓系统中的安卓层又可以包括用户层和框架层,那么,终端设备通过所述安卓层获取读取占用内存请求,可以包括:当用户层获取读取占用内存请求后,可以将该读取占用内存请求向安卓层传输。其中,该读取占用内存请求包括待读取应用程序对应的第一标识ID,也可以称为待读取占用内存的应用程序对应的第一标识ID,该第一标识ID也可以称为第一用户标识(User Identity,UID)。
可以理解的是,终端设备通过安卓层获取读取请求,可以是在当前剩余占用内存小于内存占用阈值的情况下,自动获取读取请求,也可以是用户自主操作,终端设备响应用户的操作,生成读取请求。
可选的,待读取应用程序可以是当前时刻终端设备中正在运行的应用程序,也可以是用户在当前时刻打开的应用程序,也可以是用户选择的历史时间段中运行过的应用程序,也可以是从当前安装的应用程序中选择的应用程序等。
可选的,待读取应用程序对应的第一标识ID的数量为至少一个。
102、控制所述安卓层调用访问接口,并通过所述访问接口向所述内核层传输所述第一标识。
在本发明实施例中,可以给内核层设计访问接口,也可以称为节点,该访问接口用于安卓层访问内核层。即终端设备控制所述安卓层调用访问接口,并通过所述访问接口向所述内核层传输所述第一标识。
可选的,所述访问接口包括/proc/memory_monitor节点。需要说明的是,该访问接口可以是保存在除/proc文件系统之外的其他文件系统,memory_monitor也可以命名为其他名称。只要安卓层和内核层约定好,可以控制安卓层通过该访问接口访问内核层,一次获取多个应用程序的占用内存即可。
示例性的,终端设备可以通过为Android层提供/proc/memory_monitor的节点,并且Android层可以设置具体某个待读取应用程序的UID,也可以设置多个待读取应用程序的UID范围,以使得内核层可以统计该UID或者UID范围对应的占用内存。
如图2所示,为本发明实施例中终端设备通过安卓层设置待读取应用程序的UID范围的一个示意图。Android层设置待读取应用程序的UID范围,Android层可以将对应的UID范围写入到/proc/memory_monitor即可,Linux内核层可以将需要读取的UID最小值和UID最大值保存在全局变量UID_start和UID_end中。如果只要读取一个应用程序,可以将需要读取的UID最小值和UID最大值设置成一样就可以了。
需要说明的是,/proc文件系统下的多种文件提供的系统信息不是针对某个特定进程的,而是能够在整个系统范围的上下文中使用。可以使用的文件随系统配置的变化而变化。命令procinfo能够显示基于其中某些文件的多种系统信息。以下详细描述/proc下的文件。
/proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。由内核动态创建,不需要任何存储设备。多数为只读,提供观察数据,一部分可写用于控制内核行为。用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是动态从系统内核读出所需信息并提交的。
需要说明的是,Memory Monitor是一个给开发者使用的Android App内存清理、监控工具。主要包括以下三部分功能,如下所示:
(1)内存清理
通过内存清理可以模拟系统内存不足时对进程的回收。类似各种手机管家的加速球,获取系统已用内存比率、可用内存大小,一键清理。
可以用于测试自己开发的Activity、Fragment健壮性,模拟Activity、Fragment被回收的场景,测试自己的程序是否完好的保存、恢复当前场景。比如:打开开发的某个Activity、Fragment,切到后台,清理一次内存,在将其切回前台后,看会不会出现空指针异常,以及程序状态是否被恢复。
(2)Pss监控
通过内存监控可以监控指定应用程序使用的total Pss以及当前手机的内存使用情况,从而检测该应用是否存在内存泄漏。
Android系统中的内存和Linux系统一样,存在着大量的共享内存。每个App占内存会有私有和公共的两部分,可以通过App的Pss值,获取到这两部分内存。
Pss(Proportional Set Size):实际使用的物理内存,即:自身应用占有的内存+共享内存中比例分配给这个应用的内存。
通过该程序,每隔1秒,获取一次被监控App的Total Pss值。
使用某个功能,查看Pss是否飙升,或者使用过许久都没有降低。如果使用后飙升并且长时间都降不下来,那就说明肯定会导致OOM(对象使用过之后还被引用着未释放),如果使用之后Total Pss飙升,但是使用过之后能降下来,也可能会导致OOM,还是需要去一点一点排查是什么原因导致的。如果使用后飙升并且长时间都降不下来,可能就需要使用MAT来进一步分析问题所在。
(3)内存优化
整理了一些关于内存优化的tips,以及一些可能导致内存溢出的场景示例,包含错误的写法和正确的写法。
Android的虚拟机是基于寄存器的Dalvik,它的最大堆大小一般比较小(最低端的设备16M,后来出的设备变成了24M、48M等等),因此,所能利用的内存空间是有限的。如果使用内存占用超过了一定的限额后就会出现Out Of Memory的错误。
103、通过所述内核层统计所述第一标识对应的占用内存,并将所述第一ID对应的占用内存返回所述安卓层。
可以理解的是,所述第一标识对应的占用内存可以包括:所述第一标识中每个标识对应的占用总内存,或,所述第一标识中每个标识对应各个进程的占用内存。下面分别进行说明,如下所示:
(1)所述第一ID对应的占用内存包括:所述第一ID中每个ID对应的占用总内存;所述通过所述内核层统计所述第一ID对应的占用内存,可以包括:终端设备通过所述内核层获取所述第一ID中每个ID对应各个进程的占用内存;终端设备通过所述内核层根据所述第一ID中每个ID对应各个进程的占用内存,计算得到所述第一ID中每个ID对应的占用总内存。
(2)所述第一ID对应的占用内存包括:所述第一ID中每个ID对应各个进程的占用内存;在所述将所述第一ID对应的占用内存返回所述安卓层之后,所述方法还可以包括:通过所述安卓层根据所述第一ID中每个ID对应各个进程的占用内存,计算得到所述第一ID中每个ID对应的占用总内存。
可选的,根据所述第一ID中每个ID对应各个进程的占用内存,计算得到所述第一ID中每个ID对应的占用总内存,可以包括:对所述第一ID中每个ID对应各个进程的占用内存求和,计算得到所述第一ID中每个ID对应的占用总内存。
可选的,所述通过所述内核层统计所述第一ID对应的占用内存,可以包括但不限于以下的实现方式:
实现方式1:终端设备通过所述内核层确定与所述第一ID匹配的各个进程;终端设备通过所述内核层读取与所述第一ID匹配的各个进程的内存类型信息,获取与所述第一ID匹配的各个进程的占用内存;终端设备通过所述内核层根据所述与所述第一ID匹配的各个进程的占用内存,统计所述第一ID中每个ID对应各个进程的占用内存。
示例性的,内核层接收到读取操作后,可以遍历所有的进程,并获取每个进程的目标ID,内核层筛选出与待读取应用程序对应的第一标识ID匹配的各个进程,然后,读取与第一标识ID匹配的各个进程的内存类型信息,确定与第一ID匹配的各个进程的占用内存,然后,可以统计该第一ID中每个ID对应各个进程的占用内存。
进一步的,如果该读取操作指示获取的是第一ID中每个ID对应各个进程的占用内存,那么,内核层在获取之后,可以直接向安卓层返回该第一ID中每个ID对应各个进程的占用内存的信息;如果该读取操作指示获取的是第一ID中每个ID对应的占用总内存,那么,需要对每个ID对应各个进程的占用内存进行求和,来得到每个ID对应的占用总内存,然后,再向安卓层返回该第一ID中每个ID对应的占用总内存的信息。
实现方式2:终端设备通过所述内核层获取第一进程的第一目标ID;终端设备通过所述内核层在确定所述第一目标ID与所述第一ID不匹配的情况下,获取第二进程的第二目标ID;终端设备通过所述内核层在确定所述第二目标ID与所述第一ID匹配的情况下,获取所述第二进程的占用内存;若所述内核层包括第一进程和所述第二进程,则终端设备确定所述第二进程的占用内存为所述第一ID对应的占用内存。
示例性的,内核层接收到读取操作后,可以在遍历完一个进程后,再遍历下一个进程。其中,内核层在遍历进程的时候,会获取该进程的目标ID,然后,判断该目标ID是否属于待读取应用程序对应的第一ID,如果属于,则内核层通过读取该内存类型信息,来获取该进程的占用内存,如果不属于,则遍历下一个进程,进行同样的处理,当遍历完所有的进程后,可以统计该第一ID中每个ID对应各个进程的占用内存。
进一步的,如果该读取操作指示获取的是第一ID中每个ID对应各个进程的占用内存,那么,内核层在获取之后,可以直接向安卓层返回该第一ID中每个ID对应各个进程的占用内存的信息;如果该读取操作指示获取的是第一ID中每个ID对应的占用总内存,那么,需要对每个ID对应各个进程的占用内存进行求和,来得到每个ID对应的占用总内存,然后,再向安卓层返回该第一ID中每个ID对应的占用总内存的信息。
需要说明的是,内核层在获取进程的占用内存时,是通过读取内存类型信息所对应的内存,该操作只要读取进程结构的某个值即可,所以耗时很短。如图3所示,为本发明实施例中为本发明实施例中统计占用内存的方法的一个流程示意图。在图3所示中,终端设备的安卓层获取读取请求后,读取/proc/memory_monitor节点,访问内核层,内核层遍历所有进程,获取进程的目标ID,若该目标ID在待访问应用程序的第一ID中,可以获取该进程的占用内存,然后,保存该进程的占用内存,如果将进程遍历完之后,可以统计第一ID中每个ID对应的占用内存,最后将第一ID中每个ID对应的占用内存返回给安卓层。
可选的,所述第一标识中每个ID对应各个进程的占用内存可以包括但不限于以下类型的内存:
匿名页内存、文件缓存、共享内存、压缩内存,以及ION内存中的至少一项。
如果将计算内存的实现放在Android层,那么,打开和读取每个进程的内存文件节点的时间是没法节省的,因为Android层只能从内存里面读取节点获取内存信息。而在本发明实施例中,提供一种通过内核层提供接口,满足上层快速读取应用的占用内存的方法。Linux操作系统内核设计节点,一次性可以提供所有应用的内存给上层读取。终端设备的安卓层通过读取/proc/memory_monitor一个节点即可,不必打开多个内存节点,以此节省文件操作的时间。如果读取的应用数比较大,优化时间更加明显。所以,所以将计算内存的实现放在内核层里面,可以减少现有技术中打开和读取每个进程的内存文件节点的时间;关于统计各个进程的内存信息,可以直接通过读取内核的各个类型页面的方式,这样就不用读取各个分配的内存信息,时间会得到较大的节省;计算所有应用程序的时间则可以通过待读取应用程序的第一ID,将每个ID对应各个进程的内存进行相加即可得到。
如图4所示,为本发明实施例中统计占用内存的方法的另一个实施例示意图。所述方法应用于安卓系统的终端设备,所述安卓系统包括安卓层和内核层,所述方法可以包括:
401、通过所述安卓层获取读取请求,所述读取请求包括待读取应用程序对应的第一标识。
402、控制所述安卓层调用访问接口,并通过所述访问接口向所述内核层传输所述第一标识。
403、通过所述内核层统计所述第一标识对应的占用内存,并将所述第一标识对应的占用内存返回所述安卓层。
本发明实施例中的步骤401-步骤403,与图1所示实施例中的步骤101-步骤103,此处不再赘述。
404、通过所述安卓层输出所述第一标识对应的占用内存。
终端设备通过所述安卓层输出所述第一标识对应的占用内存,可以包括:终端设备通过所述安卓层在显示界面上输出第一标识对应的占用内存,以供用户查看。
可选的,将所述第一标识对应的占用内存返回所述安卓层之后,终端设备可以根据第一标识对应的占用内存,进行内存管理。
可选的,将所述第一标识对应的占用内存返回所述安卓层之后,终端设备可以根据第一标识对应的占用内存,判断待读取应用程序是否存在内存泄漏。
可选的,将所述第一标识对应的占用内存返回所述安卓层之后,终端设备可以在剩余内存不足的情况下,根据第一标识对应的占用内存,进行释放。
可选的,将所述第一标识对应的占用内存返回所述安卓层之后,终端设备可以根据第一标识对应的占用内存,进行内存清理。
可选的,将所述第一标识对应的占用内存返回所述安卓层之后,终端设备可以在剩余内存不足的情况下,根据第一标识对应的占用内存,选择占用内存最大的应用程序进行释放,或者,选择预置时长内未使用且占用内存最大的应用程序进行释放。
在本发明实施例中,通过安卓层获取读取请求后,可以控制安卓层调用访问接口将待读取应用程序的第一标识传输给内核层,并通过内核层统计待读取应用程序的第一标识对应的占用内存,再返回给安卓层,通过安卓层输出该第一标识对应的占用内存,以供用户查看。所以,相对于现有技术是安卓层通过与待统计进程的各个访问接口,访问各个内存文件来说,本发明实施例中是通过内核层获取待读取应用程序对应的第一标识对应的占用内存,因为内核本身有保存各个进程不同内存类型的占用内存信息,所以,内核层获取第一标识对应的占用内存相对于现有技术来说,耗时会短一些,内核层获取该第一标识对应的占用内存之后,再通过该访问接口返回给安卓层,再通过安卓层输出该第一标识对应的占用内存,以供用户查看。
如图5所示,是本发明实施例的终端设备的软件结构框图。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为四层,从上至下分别为应用程序层(也称为用户层),应用程序框架层,安卓运行时(Android runtime)和系统库,以及内核层。其中,应用程序层和应用程序框架层也可以概括为安卓层。
应用程序层可以包括一系列应用程序包。
如图5所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图5所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
电话管理器用于提供终端设备的通信功能。例如通话状态的管理(包括接通,挂断等)。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,终端设备振动,指示灯闪烁等。
Android Runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(例如:OpenGL ES),2D图形引擎(例如:SGL)等。
表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。
三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。
2D图形引擎是2D绘图的绘图引擎。
内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。
在本发明实施例中,所述应用程序层,用于获取读取请求,所述读取请求包括待读取应用程序对应的第一标识;向应用程序框架层发送所述读取请求;
所述应用程序框架层,用于接收所述应用程序层发送的读取请求,调用访问接口,并通过所述访问接口向所述内核层传输所述第一标识;
所述内核层,用于接收所述应用程序框架层发送的读取请求,根据所述读取请求统计所述第一标识对应的占用内存,并将所述第一标识对应的占用内存返回所述应用程序框架层;
应用程序框架层,还用于接收所述内核层返回的所述第一标识对应的占用内存,将所述第一标识对应的占用内存向所述应用程序层发送;
所述应用程序层,还用于接收所述应用程序框架层发送的所述第一标识对应的占用内存。
可选的,在本发明的一些实施例中,所述第一标识对应的占用内存包括:所述第一标识中每个标识对应的占用总内存;
所述内核层,具体用于获取所述第一标识中每个标识对应各个进程的占用内存;根据所述第一标识中每个标识对应各个进程的占用内存,计算得到所述第一标识中每个标识对应的占用总内存。
可选的,在本发明的一些实施例中,所述第一标识对应的占用内存包括:所述第一标识中每个标识对应各个进程的占用内存;在所述将所述第一标识对应的占用内存返回所述安卓层之后,
所述应用程序框架层,还用于根据所述第一标识中每个标识对应各个进程的占用内存,计算得到所述第一标识中每个标识对应的占用总内存。
可选的,在本发明的一些实施例中,
所述内核层,具体用于确定与所述第一标识匹配的各个进程;读取与所述第一标识匹配的各个进程的内存类型信息,获取与所述第一标识匹配的各个进程的占用内存;根据所述与所述第一标识匹配的各个进程的占用内存,统计所述第一标识中每个标识对应各个进程的占用内存。
可选的,在本发明的一些实施例中,
所述内核层,具体用于获取第一进程的第一目标标识;在确定所述第一目标标识与所述第一标识不匹配的情况下,获取第二进程的第二目标标识;在确定所述第二目标标识与所述第一标识匹配的情况下,获取所述第二进程的占用内存;若所述内核层包括第一进程和所述第二进程,则确定所述第二进程的占用内存为所述第一标识对应的占用内存。
可选的,在本发明的一些实施例中,
所述应用程序层,还用于输出所述第一标识对应的占用内存。
可选的,在本发明的一些实施例中,所述第一标识中每个标识对应各个进程的占用内存包括:匿名页内存、文件缓存、共享内存、压缩内存,以及ION内存中的至少一项。
如图6所示,为本发明实施例中终端设备的另一个实施例示意图,可以包括:
图6示出的是与本发明实施例提供的终端设备相关的手机的部分结构的框图。参考图6,手机包括:射频(Radio Frequency,RF)电路610、存储器620、输入单元630、显示单元640、传感器650、音频电路660、无线保真(wireless fid elity,WiFi)模块670、处理器680、以及电源690等部件。本领域技术人员可以理解,图6中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图6对手机的各个构成部件进行具体的介绍:
RF电路610可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器680处理;另外,将设计上行的数据发送给基站。通常,RF电路610包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(Low NoiseAmplifier,LNA)、双工器等。此外,RF电路610还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(GlobalSystem of Mobile communication,GSM)、通用分组无线服务(General Packet RadioService,GPRS)、码分多址(Code Division Multiple Access,CDMA)、宽带码分多址(Wideband Code Division Multiple Access,WCDMA)、长期演进(Long Term Evolution,LTE)、电子邮件、短消息服务(Short Messaging Service,SMS)等。
存储器620可用于存储软件程序以及模块,处理器680通过运行存储在存储器620的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器620可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器620可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元630可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元630可包括触控面板631以及其他输入设备632。触控面板631,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板631上或在触控面板631附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板631可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器680,并能接收处理器680发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板631。除了触控面板631,输入单元630还可以包括其他输入设备632。具体地,其他输入设备632可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元640可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元640可包括显示面板641,可选的,可以采用液晶显示器(Liquid CrystalDisplay,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板641。进一步的,触控面板631可覆盖显示面板641,当触控面板631检测到在其上或附近的触摸操作后,传送给处理器680以确定触摸事件的类型,随后处理器680根据触摸事件的类型在显示面板641上提供相应的视觉输出。虽然在图6中,触控面板631与显示面板641是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板631与显示面板641集成而实现手机的输入和输出功能。
手机还可包括至少一种传感器650,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板641的亮度,接近传感器可在手机移动到耳边时,关闭显示面板641和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路660、扬声器661,传声器662可提供用户与手机之间的音频接口。音频电路660可将接收到的音频数据转换后的电信号,传输到扬声器661,由扬声器661转换为声音信号输出;另一方面,传声器662将收集的声音信号转换为电信号,由音频电路660接收后转换为音频数据,再将音频数据输出处理器680处理后,经RF电路610以发送给比如另一手机,或者将音频数据输出至存储器620以便进一步处理。
WiFi属于短距离无线传输技术,手机通过WiFi模块670可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图6示出了WiFi模块670,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器680是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器620内的软件程序和/或模块,以及调用存储在存储器620内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器680可包括一个或多个处理单元;优选的,处理器680可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器680中。
手机还包括给各个部件供电的电源690(比如电池),优选的,电源可以通过电源管理系统与处理器680逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。
本发明实施例应用于安卓系统的终端设备,所述安卓系统包括安卓层和内核层,该终端设备所包括的处理器680还具有以下功能:
通过所述安卓层获取读取请求,所述读取请求包括待读取应用程序对应的第一标识;
控制所述安卓层调用访问接口,并通过所述访问接口向所述内核层传输所述第一标识;
通过所述内核层统计所述第一标识对应的占用内存,并将所述第一标识对应的占用内存返回所述安卓层。
可选的,在本发明的一些实施例中,所述第一标识对应的占用内存包括:所述第一标识中每个标识对应的占用总内存;处理器680还具有以下功能:
通过所述内核层获取所述第一标识中每个标识对应各个进程的占用内存;
通过所述内核层根据所述第一标识中每个标识对应各个进程的占用内存,计算得到所述第一标识中每个标识对应的占用总内存。
可选的,在本发明的一些实施例中,所述第一标识对应的占用内存包括:所述第一标识中每个标识对应各个进程的占用内存;在所述将所述第一标识对应的占用内存返回所述安卓层之后,处理器680还具有以下功能:
通过所述安卓层根据所述第一标识中每个标识对应各个进程的占用内存,计算得到所述第一标识中每个标识对应的占用总内存。
可选的,在本发明的一些实施例中,处理器680还具有以下功能:
通过所述内核层确定与所述第一标识匹配的各个进程;
通过所述内核层读取与所述第一标识匹配的各个进程的内存类型信息,获取与所述第一标识匹配的各个进程的占用内存;
通过所述内核层根据所述与所述第一标识匹配的各个进程的占用内存,统计所述第一标识中每个标识对应各个进程的占用内存。
可选的,在本发明的一些实施例中,处理器680还具有以下功能:
通过所述内核层获取第一进程的第一目标标识;
通过所述内核层在确定所述第一目标标识与所述第一标识不匹配的情况下,获取第二进程的第二目标标识;
通过所述内核层在确定所述第二目标标识与所述第一标识匹配的情况下,获取所述第二进程的占用内存;
若所述内核层包括第一进程和所述第二进程,则确定所述第二进程的占用内存为所述第一标识对应的占用内存。
可选的,在本发明的一些实施例中,处理器680还具有以下功能:
通过所述安卓层输出所述第一标识对应的占用内存。
可选的,在本发明的一些实施例中,所述第一标识中每个标识对应各个进程的占用内存包括:匿名页内存、文件缓存、共享内存、压缩内存,以及ION内存中的至少一项。
如图7所示,为本发明实施例中终端设备的另一个实施例示意图,所述终端设备应用于安卓系统的终端设备,所述安卓系统包括安卓层和内核层,可以包括:
获取模块701,用于通过所述安卓层获取读取请求,所述读取请求包括待读取应用程序对应的第一标识;
处理模块702,用于控制所述安卓层调用访问接口,并通过所述访问接口向所述内核层传输所述第一标识;通过所述内核层统计所述第一标识对应的占用内存,并将所述第一标识对应的占用内存返回所述安卓层。
可选的,在本发明的一些实施例中,
可选的,在本发明的一些实施例中,所述第一标识对应的占用内存包括:所述第一标识中每个标识对应的占用总内存;
处理模块702,具体用于通过所述内核层获取所述第一标识中每个标识对应各个进程的占用内存;通过所述内核层根据所述第一标识中每个标识对应各个进程的占用内存,计算得到所述第一标识中每个标识对应的占用总内存。
可选的,在本发明的一些实施例中,所述第一标识对应的占用内存包括:所述第一标识中每个标识对应各个进程的占用内存;在所述将所述第一标识对应的占用内存返回所述安卓层之后,
处理模块702,还用于通过所述安卓层根据所述第一标识中每个标识对应各个进程的占用内存,计算得到所述第一标识中每个标识对应的占用总内存。
可选的,在本发明的一些实施例中,
处理模块702,具体用于通过所述内核层确定与所述第一标识匹配的各个进程;通过所述内核层读取与所述第一标识匹配的各个进程的内存类型信息,获取与所述第一标识匹配的各个进程的占用内存;通过所述内核层根据所述与所述第一标识匹配的各个进程的占用内存,统计所述第一标识中每个标识对应各个进程的占用内存。
可选的,在本发明的一些实施例中,
处理模块702,具体用于通过所述内核层获取第一进程的第一目标标识;通过所述内核层在确定所述第一目标标识与所述第一标识不匹配的情况下,获取第二进程的第二目标标识;通过所述内核层在确定所述第二目标标识与所述第一标识匹配的情况下,获取所述第二进程的占用内存;若所述内核层包括第一进程和所述第二进程,则确定所述第二进程的占用内存为所述第一标识对应的占用内存。
可选的,在本发明的一些实施例中,
处理模块702,具体用于通过所述安卓层输出所述第一标识对应的占用内存。
可选的,在本发明的一些实施例中,所述第一标识中每个标识对应各个进程的占用内存包括:匿名页内存、文件缓存、共享内存、压缩内存,以及ION内存中的至少一项。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (9)
1.一种统计占用内存的方法,其特征在于,所述方法应用于安卓系统的终端设备,所述安卓系统包括安卓层和内核层,所述方法包括:
通过所述安卓层获取读取请求,所述读取请求包括待读取应用程序对应的第一标识;
控制所述安卓层调用访问接口,并通过所述访问接口向所述内核层传输所述第一标识;
通过所述内核层统计所述第一标识对应的占用内存,并将所述第一标识对应的占用内存返回所述安卓层;其中,所述第一标识对应的占用内存包括:所述第一标识中每个标识对应的占用总内存;
所述通过所述内核层统计所述第一标识对应的占用内存,包括:
通过所述内核层获取所述第一标识中每个标识对应各个进程的占用内存;
通过所述内核层根据所述第一标识中每个标识对应各个进程的占用内存,计算得到所述第一标识中每个标识对应的占用总内存。
2.根据权利要求1所述的方法,其特征在于,所述第一标识对应的占用内存包括:所述第一标识中每个标识对应各个进程的占用内存;在所述将所述第一标识对应的占用内存返回所述安卓层之后,所述方法还包括:
通过所述安卓层根据所述第一标识中每个标识对应各个进程的占用内存,计算得到所述第一标识中每个标识对应的占用总内存。
3.根据权利要求1或2所述的方法,其特征在于,所述通过所述内核层统计所述第一标识对应的占用内存,包括:
通过所述内核层确定与所述第一标识匹配的各个进程;
通过所述内核层读取与所述第一标识匹配的各个进程的内存类型信息,获取与所述第一标识匹配的各个进程的占用内存;
通过所述内核层根据所述与所述第一标识匹配的各个进程的占用内存,统计所述第一标识中每个标识对应各个进程的占用内存。
4.根据权利要求1或2所述的方法,其特征在于,所述通过所述内核层统计所述第一标识对应的占用内存,包括:
通过所述内核层获取第一进程的第一目标标识;
通过所述内核层在确定所述第一目标标识与所述第一标识不匹配的情况下,获取第二进程的第二目标标识;
通过所述内核层在确定所述第二目标标识与所述第一标识匹配的情况下,获取所述第二进程的占用内存;
若所述内核层包括第一进程和所述第二进程,则确定所述第二进程的占用内存为所述第一标识对应的占用内存。
5.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
通过所述安卓层输出所述第一标识对应的占用内存。
6.根据权利要求2-4中任一项所述的方法,其特征在于,所述第一标识中每个标识对应各个进程的占用内存包括:匿名页内存、文件缓存、共享内存、压缩内存,以及ION内存中的至少一项。
7.一种终端设备,其特征在于,所述终端设备应用于安卓系统的终端设备,所述安卓系统包括安卓层和内核层,包括:
获取模块,用于通过所述安卓层获取读取请求,所述读取请求包括待读取应用程序对应的第一标识;
处理模块,用于控制所述安卓层调用访问接口,并通过所述访问接口向所述内核层传输所述第一标识;通过所述内核层统计所述第一标识对应的占用内存,并将所述第一标识对应的占用内存返回所述安卓层;其中,所述第一标识对应的占用内存包括:所述第一标识中每个标识对应的占用总内存;
处理模块,具体用于通过所述内核层获取所述第一标识中每个标识对应各个进程的占用内存;通过所述内核层根据所述第一标识中每个标识对应各个进程的占用内存,计算得到所述第一标识中每个标识对应的占用总内存。
8.一种终端设备,其特征在于,
存储有可执行程序代码的存储器;
以及所述存储器耦合的处理器;
所述处理器调用所述存储器中存储的所述可执行程序代码,用于执行如权利要求1-6中任一项所述的方法。
9.一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如权利要求1-6中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010771880.8A CN111966491B (zh) | 2020-08-04 | 2020-08-04 | 统计占用内存的方法及终端设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010771880.8A CN111966491B (zh) | 2020-08-04 | 2020-08-04 | 统计占用内存的方法及终端设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111966491A CN111966491A (zh) | 2020-11-20 |
CN111966491B true CN111966491B (zh) | 2023-07-21 |
Family
ID=73363407
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010771880.8A Active CN111966491B (zh) | 2020-08-04 | 2020-08-04 | 统计占用内存的方法及终端设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111966491B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112948208B (zh) * | 2021-02-24 | 2022-06-21 | 视若飞信息科技(上海)有限公司 | 一种内存监测和回收方法、系统、设备及存储介质 |
CN113268243B (zh) * | 2021-05-11 | 2024-02-23 | 网易(杭州)网络有限公司 | 内存预测方法及装置、存储介质、电子设备 |
CN113553204B (zh) * | 2021-09-16 | 2021-12-28 | 支付宝(杭州)信息技术有限公司 | 一种数据传输方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105184166A (zh) * | 2015-10-21 | 2015-12-23 | 南京大学 | 基于内核的安卓程序实时行为分析方法及系统 |
CN107743080A (zh) * | 2017-09-30 | 2018-02-27 | 广东欧珀移动通信有限公司 | 流量统计方法和装置、计算机设备、计算机可读存储介质 |
CN108170503A (zh) * | 2018-01-24 | 2018-06-15 | 腾讯科技(深圳)有限公司 | 一种跨系统运行安卓应用的方法、终端及存储介质 |
CN110196798A (zh) * | 2019-06-06 | 2019-09-03 | 百度在线网络技术(北京)有限公司 | 性能数据确定方法、装置、设备和可读存储介质 |
CN110427785A (zh) * | 2019-07-23 | 2019-11-08 | 腾讯科技(深圳)有限公司 | 设备指纹的获取方法和装置、存储介质及电子装置 |
CN110851334A (zh) * | 2019-11-19 | 2020-02-28 | 深圳市网心科技有限公司 | 流量统计方法、电子设备、系统及介质 |
-
2020
- 2020-08-04 CN CN202010771880.8A patent/CN111966491B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105184166A (zh) * | 2015-10-21 | 2015-12-23 | 南京大学 | 基于内核的安卓程序实时行为分析方法及系统 |
CN107743080A (zh) * | 2017-09-30 | 2018-02-27 | 广东欧珀移动通信有限公司 | 流量统计方法和装置、计算机设备、计算机可读存储介质 |
CN108170503A (zh) * | 2018-01-24 | 2018-06-15 | 腾讯科技(深圳)有限公司 | 一种跨系统运行安卓应用的方法、终端及存储介质 |
CN110196798A (zh) * | 2019-06-06 | 2019-09-03 | 百度在线网络技术(北京)有限公司 | 性能数据确定方法、装置、设备和可读存储介质 |
CN110427785A (zh) * | 2019-07-23 | 2019-11-08 | 腾讯科技(深圳)有限公司 | 设备指纹的获取方法和装置、存储介质及电子装置 |
CN110851334A (zh) * | 2019-11-19 | 2020-02-28 | 深圳市网心科技有限公司 | 流量统计方法、电子设备、系统及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111966491A (zh) | 2020-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108415739B (zh) | 一种动态链接库函数的钩挂方法、装置和存储介质 | |
CN111966491B (zh) | 统计占用内存的方法及终端设备 | |
US10186244B2 (en) | Sound effect processing method and device, plug-in unit manager and sound effect plug-in unit | |
CN103544033B (zh) | 应用程序回退方法、装置及相关设备 | |
CN106502703B (zh) | 一种函数调用方法和装置 | |
EP3937016A1 (en) | Memory management method and apparatus | |
CN103455407A (zh) | 一种移动终端cpu占用率监测方法、装置及移动终端 | |
CN106155750A (zh) | 一种资源文件的加载方法和装置 | |
CN108920220B (zh) | 一种函数调用的方法、装置及终端 | |
CN112148579B (zh) | 一种用户界面的测试方法和装置 | |
CN111580815B (zh) | 一种页面元素的编辑方法及相关设备 | |
CN111078556B (zh) | 应用测试方法及装置 | |
CN110046497B (zh) | 一种函数挂钩实现方法、装置和存储介质 | |
US10298590B2 (en) | Application-based service providing method, apparatus, and system | |
EP2869604A1 (en) | Method, apparatus and device for processing a mobile terminal resource | |
CN106407800A (zh) | 一种hook的方法及终端设备 | |
CN108664389B (zh) | 一种测试方法、装置及终端 | |
CN105872041B (zh) | 操作对象的处理方法及装置 | |
CN111274463B (zh) | 基于im联系人分组设置的信息展示方法、装置及存储介质 | |
CN109471708B (zh) | 一种任务处理方法、装置及系统 | |
CN109902484B (zh) | 一种关联应用的处理方法以及终端 | |
CN108595958B (zh) | 一种用于实现跨进程注入的方法、装置及终端 | |
CN114490307A (zh) | 一种单元测试方法、装置及存储介质 | |
CN113312249A (zh) | 日志数据生成方法、日志数据显示方法及装置 | |
CN116088955B (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 |