CN112416574A - 一种确定应用占用内存的方法、装置及存储介质 - Google Patents
一种确定应用占用内存的方法、装置及存储介质 Download PDFInfo
- Publication number
- CN112416574A CN112416574A CN202011189993.3A CN202011189993A CN112416574A CN 112416574 A CN112416574 A CN 112416574A CN 202011189993 A CN202011189993 A CN 202011189993A CN 112416574 A CN112416574 A CN 112416574A
- Authority
- CN
- China
- Prior art keywords
- memory
- closed
- size
- source library
- determining
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 430
- 238000000034 method Methods 0.000 title claims abstract description 66
- 230000006870 function Effects 0.000 claims abstract description 159
- 238000005457 optimization Methods 0.000 claims abstract description 22
- 238000005315 distribution function Methods 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 5
- 238000012545 processing Methods 0.000 abstract description 20
- 230000002159 abnormal effect Effects 0.000 abstract description 10
- 238000004891 communication Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 10
- 238000012544 monitoring process Methods 0.000 description 5
- 230000005291 magnetic effect Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000005236 sound signal Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000003796 beauty Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
Images
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
- 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/5022—Mechanisms to release resources
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Memory System (AREA)
Abstract
本公开是关于一种确定应用占用内存的方法、装置及存储介质。其中,确定应用占用内存的方法,应用于终端,所述应用包括多个闭源库,所述方法包括:所述多个闭源库中存在至少一个闭源库用于调用内存的分配函数及释放函数,根据所述分配函数及所述释放函数,确定所述至少一个闭源库中每一闭源库的名称,分配的内存大小和释放的内存大小;基于每一所述闭源库的名称,分配的内存大小和释放的内存大小,确定每一所述闭源库占用的内存大小。通过本公开可以清楚确定每个闭源库占用内存的大小,进而可以有针对性的对占用内存异常的闭源库进行优化处理。
Description
技术领域
本公开涉及内存分配技术领域,尤其涉及一种确定应用占用内存的方法、装置及存储介质。
背景技术
在终端的高速发展中,高效的内存使用可以提升终端系统的流畅性,以及提高手机处理任务的性能,因此,终端内存的合理高效使用是体现终端性能的其中一大指标。
但是,随着终端的发展,逐渐在增加新功能以及数据处理任务的复杂性,导致对终端性能的要求越来越高。所以,如何清楚确定应用中各功能对内存资源消耗的情况,合理使用终端内存,对内存优化提升终端整体的性能是问题的关键。
发明内容
为克服相关技术中存在的问题,本公开提供一种确定应用占用内存的方法、装置及存储介质。
根据本公开实施例的第一方面,提供一种确定应用占用内存的方法,所述应用包括多个闭源库,所述方法包括:
所述多个闭源库中存在至少一个闭源库用于调用内存的分配函数及释放函数,根据所述分配函数及所述释放函数,确定所述至少一个闭源库中每一闭源库的名称,分配的内存大小和释放的内存大小;基于每一所述闭源库的名称,分配的内存大小和释放的内存大小,确定每一所述闭源库占用的内存大小。
在一种实施方式中,所述确定所述多个闭源库中每一所述闭源库的名称,分配的内存大小和释放的内存大小,包括:
建立与所述分配函数及所述释放函数相关联的钩子函数,所述钩子函数用于调用闭源库的名称,分配的内存大小和释放的内存大小;基于所述钩子函数确定每一所述闭源库的名称,分配的内存大小和释放的内存大小;其中,闭源库的名称,分配的内存大小和释放的内存大小之间存在一一对应关系。
在一种实施方式中,所述基于每一所述闭源库的名称,分配的内存大小和释放的内存大小,确定每一所述闭源库占用的内存大小,包括:
确定所有闭源库名称,以及与所述闭源库名称对应的分配的内存大小和释放的内存大小;根据每一所述闭源库名称,以及与所述闭源库名称对应的分配的内存大小和释放的内存大小,确定每一所述闭源库占用的内存大小。
在一种实施方式中,所述方法还包括:
响应于所述所有闭源库占用的内存大小之和大于或等于第一阈值,执行闭源库优化操作。
在一种实施方式中,所述执行闭源库优化操作,包括:
确定第二阈值以及每一所述闭源库占用的内存大小的大小;确定大于或等于第二阈值的内存大小所对应的闭源库,并对所述大于或等于第二阈值的内存大小所对应的闭源库进行优化。
在一种实施方式中,所述方法还包括:
针对大于或等于第二阈值的内存大小所对应的闭源库,确定每一闭源库占用内存的分配位置,以及每一所述分配位置对应的内存大小;将每一闭源库占用内存的分配位置,以及每一所述分配位置对应的内存大小,上报至所述闭源库对应的应用。
根据本公开实施例的第二方面,提供一种确定应用占用内存的装置,所述应用包括多个闭源库,所述装置包括:
第一确定模块,用于所述多个闭源库中存在至少一个闭源库用于调用内存的分配函数及释放函数,根据所述分配函数及所述释放函数,确定所述至少一个闭源库中每一闭源库的名称,分配的内存大小和释放的内存大小;第二确定模块,用于基于每一所述闭源库的名称,分配的内存大小和释放的内存大小,确定每一所述闭源库占用的内存大小。
在一种实施方式中,所述第一确定模块用于:
建立与所述分配函数及所述释放函数相关联的钩子函数,所述钩子函数用于调用闭源库的名称,分配的内存大小和释放的内存大小;基于所述钩子函数确定每一所述闭源库的名称,分配的内存大小和释放的内存大小;其中,闭源库的名称,分配的内存大小和释放的内存大小之间存在一一对应关系。
在一种实施方式中,所述第二确定模块,用于:
确定所有闭源库名称,以及与所述闭源库名称对应的分配的内存大小和释放的内存大小;根据每一所述闭源库名称,以及与所述闭源库名称对应的分配的内存大小和释放的内存大小,确定每一所述闭源库占用的内存大小。
在一种实施方式中,所述装置还包括:执行模块;
所述执行模块用于:响应于所述所有闭源库占用的内存大小之和大于或等于第一阈值,执行闭源库优化操作。
在一种实施方式中,所述第二确定模块还用于:
确定第二阈值以及每一所述闭源库占用的内存大小的大小;确定大于或等于第二阈值的内存大小所对应的闭源库,并对所述大于或等于第二阈值的内存大小所对应的闭源库进行优化。
在一种实施方式中,所述装置还包括:
针对大于或等于第二阈值的内存大小所对应的闭源库,确定每一闭源库占用内存的分配位置,以及每一所述分配位置对应的内存大小;将每一闭源库占用内存的分配位置,以及每一所述分配位置对应的内存大小,上报至所述闭源库对应的应用。
根据本公开实施例的第三方面,提供一种确定应用占用内存的装置,包括:
处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为:执行第一方面或第一方面任意一种实施方式中所述的确定应用占用内存的方法。
根据本公开实施例的第四方面,提供一种非临时性计算机可读存储介质,当所述存储介质中的指令由移动终端的处理器执行时,使得移动终端能够执行第一方面或第一方面任意一种实施方式中所述的确定应用占用内存的方法。
本公开的实施例提供的技术方案可以包括以下有益效果:通过本公开确定终端多个闭源库中调用内存的分配函数及释放函数的闭源库的名称,分配的内存大小和释放的内存大小,基于每一所述闭源库的名称,分配的内存大小和释放的内存大小,确定每一所述闭源库占用的内存大小,可以清楚确定每个闭源库占用内存的大小,进而可以有针对性的对占用内存异常的闭源库进行优化处理。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是根据一示例性实施例示出的一种确定应用占用内存的方法的流程图。
图2是根据一示例性实施例示出的一种确定应用占用内存的方法中确定多个闭源库中每一闭源库的名称,分配的内存大小和释放的内存大小的流程图。
图3是根据一示例性实施例示出的一种确定应用占用内存的方法中确定多个闭源库中确定每一闭源库占用的内存大小的流程图。
图4是根据一示例性实施例示出的一种确定应用占用内存的方法中确定多个闭源库中执行闭源库优化操作的流程图。
图5是根据一示例性实施例示出的一种确定应用占用内存的方法中确定每个闭源库中对占用内存分配的流程图。
图6是根据一示例性实施例示出的一种确定应用占用内存的方法的示意图。
图7是根据一示例性实施例示出的一种确定应用占用内存的方法的闭源库内存随时间变化的示意图。
图8是根据一示例性实施例示出的一种确定应用占用内存的装置框图。
图9是根据一示例性实施例示出的又一种确定应用占用内存的装置框图。
图10是根据一示例性实施例示出的一种确定应用占用内存的装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在终端的系统中,高效的内存使用可以提升终端系统的流畅性,以及提高手机处理任务的性能,因此,终端内存的合理高效使用是体现终端性能的其中一大指标。但是,随着终端的发展,逐渐在增加新功能以及数据处理任务的复杂性,导致对终端性能的要求越来越高,占用的内存也因此越来越大。
相关技术中,对于内存的使用情况仅仅是可以确定哪一功能占用内存的总体情况。例如,终端的内存占用可以确定相机占用内存的大小为A兆,短信功能占用内存的大小为B兆,但是不能确定相机功能中的美颜功能,瘦脸功能,滤镜功能等相机中包括的各个子功能占用的内存大小,短信功能中垃圾短信,广告短信,推广短信等各占用的内存大小。当优化各个功能时,不能有针对性的优化占用内存相对较大的功能。所以,如何清楚确定各功能对内存资源消耗的情况,合理使用终端内存,对内存优化提升终端整体的性能是问题的关键。
基于此,本公开提供一种确定应用占用内存的方法。通过本公开提供的闭源库内存统计方法,可以清楚的确定每个功能中包括的子功能分别占用的内存大小。在进一步对终端进行优化处理时,可以有针对性的优化内存大小相对较大的功能,进而可以有效提高终端整体的性能。
需要理解的是,每个应用对应包括一个或多个闭源库,闭源库包括静态库和动态库。每个动态库文件可以包括一个或多个钩子(hook)函数构成。其中,钩子函数用于在操作系统中当发出的特定消息还没有到达目的窗口之前,捕获该特定消息,从而得到对该特定消息的控制权,并且可以获取发出该特定消息的闭源库的相关信息。因此,由钩子函数构成的动态库文件可以作为在该公共目录下运行对应的内存的分配函数和释放函数的入口,通过调用动态库文件,执行其中的钩子函数,从而运行先运行钩子函数,获取调用内存分配及释放函数的闭源库的相关信息。
闭源库在调用内存的分配函数和释放函数入口时,可以通过运行钩子函数,来对所有自动采集调用内存的分配函数和释放函数的闭源库的相关信息。其中,钩子函数也可以称为Hook技术,Hook技术是在进程运行时动态的将额外代码依附于现进程中,从而实现替换现有处理逻辑或插入额外功能的目的。在本公开的实施例中,每当闭源库启动调用内存的分配函数和释放函数时,都将设定的Hook代码动态注入到闭源库启动调用内存的分配函数和释放函数的目标进程中,以在闭源库启动调用内存的分配函数及释放函数的消息传送到终点前截获并监控闭源库占用的内存大小。
本公开提供的确定应用占用内存的方法,如上述,可以应用在终端闭源库的内存占用情况的监控及统计的场景下,在内存夜里测试或日常使用可以对闭源库内存调用进行实时统计,从而实现对各个闭源库使用的内存进行实时统计及监控。
图1是根据一示例性实施例示出的一种确定应用占用内存的方法的流程图。如图1所示,确定应用占用内存的方法用于终端中,包括以下步骤。
在步骤S11中,多个闭源库中存在至少一个闭源库用于调用内存的分配函数及释放函数,根据分配函数及所述释放函数,确定多个闭源库中每一闭源库的名称,分配的内存大小和释放的内存大小。
在本公开一示例性实施例中,应用可以包括多个闭源库,其中闭源库也可以理解为算法库,或者闭源库也可以理解为与应用中包括的功能对应的功能模型库。终端接收到启动应用的指示,应用执行操作实现其中的功能时,需要调用相应的闭源库,闭源库需要占用内存,因此需要调用内存的分配函数及释放函数。终端接收到多个闭源库中存在至少一个闭源库调用内存的分配函数及释放函数的指示时,确定调用内存的分配函数及释放函数的多个闭源库中每一个闭源库的名称,以及与每个闭源库分配的内存大小和释放的内存大小。
在步骤S12中,基于每一闭源库的名称,分配的内存大小和释放的内存大小,确定每一闭源库占用的内存大小。
在本公开实施例中,如上述实施例,在确定了调用内存的分配函数及释放函数的多个闭源库中每一个闭源库的名称,以及与每个闭源库分配的内存大小和释放的内存大小后,需要对每个闭源库分配的内存大小和释放的内存大小进行计算,确定出每一闭源库实际占用的内存大小。并且可以随着时间的增长,实时确定出每一闭源库实际占用的内存大小,实现对每一闭源库实际占用的内存大小进行实时监控的效果。
并且通过本公开对每一闭源库实际占用的内存大小进行实时监控,可以明确知晓每一闭源库实际占有内存的大小,在进行优化操作时,可以有针对性的对占用内存异常的功能进程进行优化。
下述实施例将对确定多个闭源库中每一闭源库的名称,分配的内存大小和释放的内存大小进行说明。
图2是根据一示例性实施例示出的一种确定应用占用内存的方法中确定多个闭源库中每一闭源库的名称,分配的内存大小和释放的内存大小的流程图。如图2所示,确定多个闭源库中每一闭源库的名称,分配的内存大小和释放的内存大小,包括以下步骤。
在步骤S21中,建立与分配函数及释放函数相关联的钩子函数,钩子函数用于调用闭源库的名称,分配的内存大小和释放的内存大小。
如上述可以理解的是,钩子函数也可以称为Hook技术,Hook技术是在进程运行时动态的将额外代码依附于现进程中,从而实现替换现有处理逻辑或插入额外功能的目的。在本公开实施例中,建立与分配函数及释放函数相关联的钩子函数,用于在终端分配内存和释放内存等对内存进行相关操作时,先执行钩子函数,Hook住调用内存的分配函数及释放函数等与内存相关的函数的闭源库的信息,将该闭源库的信息进行统计记录。其中统计记录闭源库的信息可以是调用闭源库的名称,分配的内存大小和释放的内存大小。
在步骤S22中,基于钩子函数确定每一闭源库的名称,分配的内存大小和释放的内存大小。
在本公开实施例中,闭源库的名称,分配的内存大小和释放的内存大小之间存在一一对应关系。当检测到有闭源库调用内存的分配函数及释放函数等与内存相关的函数的操作时,首先基于钩子函数将调用内存的分配函数及释放函数等与内存相关的函数的操作跳转到钩子函数。终端基于钩子函数获取调用内存的分配函数及释放函数等与内存相关的函数的操作的闭源库的信息,包括每一闭源库的名称,分配的内存大小和释放的内存大小。钩子函数将获取的每一闭源库的名称,分配的内存大小和释放的内存大小,按照闭源库的名称,分配的内存大小和释放的内存大小之间存在一一对应关系进行统计记录。钩子函数对每一闭源库的名称,分配的内存大小和释放的内存大小统计记录完成之后,终端继续执行调用内存的分配函数及释放函数的操作,执行相关的进程。
在本公开一示例性实施例中,将对基于每一闭源库的名称,分配的内存大小和释放的内存大小,确定每一闭源库占用的内存大小进行说明。
图3是根据一示例性实施例示出的一种确定应用占用内存的方法中确定多个闭源库中确定每一闭源库占用的内存大小的流程图。如图3所示,基于每一闭源库的名称,分配的内存大小和释放的内存大小,确定每一闭源库占用的内存大小,包括以下步骤。
在步骤S31中,确定所有闭源库名称,以及与闭源库名称对应的分配的内存大小和释放的内存大小。
在步骤S32中,根据每一闭源库名称,以及与闭源库名称对应的分配的内存大小和释放的内存大小,确定每一闭源库占用的内存大小。
在本公开实施例中,终端基于钩子函数确定所有闭源库名称,以及与闭源库名称对应的分配的内存大小和释放的内存大小。需要说明的是,与闭源库名称对应的分配的内存大小包括已经占用的内存的大小,终端基于钩子函数实时确定所有闭源库名称,以及与闭源库名称对应的分配的内存大小和释放的内存大小,并且可以实时监控每一闭源库名称,以及与闭源库名称对应的分配的内存大小和释放的内存大小,计算每一闭源库实际占用的内存大小。以及实时统计的每一闭源库实际占用的内存大小,并输出统计的每一闭源库实际占用的内存大小。示例性的,闭源库A占用的内存大小为10兆字节,进程结束后可以释放3兆字节的内存大小,则闭源库A实际占用的内存大小为7兆字节。
在本公开实施例中,根据用户的操作,可以将统计的每一闭源库实际占用的内存大小显示在终端的显示界面。用户可以根据显示界面显示的每一闭源库实际占用的内存大小进行操作优化闭源库,此时,终端根据检测到的用户在显示界面的操作对闭源库进行优化。
当终端检测到存在闭源库占用内存异常的情况使可以自行进行优化处理。下述实施例将对终端自行优化处理闭源库进行说明。
在本公开实施例中,终端通过钩子函数实时监控所有闭源库占用的内存大小,当检测到所有闭源库占用的内存大小之和大于第一阈值时,触发执行闭源库优化操作指示,终端确定启动执行闭源库优化操作。或者,终端通过钩子函数实时监控所有闭源库占用的内存大小,当检测到所有闭源库占用的内存大小之和等于第一阈值时,触发执行闭源库优化操作指示,终端确定启动执行闭源库优化操作。其中第一阈值可以是预先设置的。
在本公开一示例性实施例中,将对执行闭源库优化操作进行说明。
图4是根据一示例性实施例示出的一种确定应用占用内存的方法中确定多个闭源库中执行闭源库优化操作的流程图。如图4所示,执行闭源库优化操作,包括以下步骤。
在步骤S41中,确定第二阈值以及每一闭源库占用的内存大小的大小。
在步骤S42中,确定大于或等于第二阈值的内存大小所对应的闭源库,并对大于或等于第二阈值的内存大小所对应的闭源库进行优化。
在本公开实施例中,第二阈值也可以是预先设置的,若存在闭源库占用内存的大小大于或等于预先设置的第二阈值时,此时,终端则认为该闭源库占用内存存在异常需要进行优化处理。终端确定第二阈值以及钩子函数输出的每一闭源库占用的内存大小,将每一闭源库占用的内存大小分别与设置的第二阈值进行比较,确定出内存大小大于第二阈值的所有闭源库,以及确定出内存大小等于第二阈值的所有闭源库。终端对内存大小大于第二阈值的所有闭源库,以及内存大小等于第二阈值的所有闭源库,确定执行闭源库进行优化操作。
图5是根据一示例性实施例示出的一种确定应用占用内存的方法中确定每个闭源库中对占用内存分配的流程图。如图5所示,执行闭源库优化操作,包括以下步骤。
在步骤S51中,针对大于或等于第二阈值的内存大小所对应的闭源库,确定每一闭源库占用内存的分配位置,以及每一分配位置对应的内存大小。
在步骤S52中,将每一闭源库占用内存的分配位置,以及每一分配位置对应的内存大小,上报至闭源库对应的应用。
在本公开实施例中,基于第二阈值确定大于或等于第二阈值的内存大小所对应的一个或多个闭源库,如上述实施例。针对于确定的一个或多个闭源库进行分析,确定出每个闭源库对占用的内存的分配情况,换言之,确定出闭源库详细内的占用信息,尤其是第三方应用包括的闭源库。例如终端包括有第三方相机应用,通过对第三方相机应用包括的多个闭源库的分析,可以确定出第三方相机应用中每个功能占用的内存大小,例如相机功能占用的内存大小,拼图功能占用的内存大小等。进一步对内存占用异常的闭源库进行详细分析,即对大于或等于第二阈值的内存大小所对应的一个或多个闭源库进行分析,确定每一闭源库中对内存的分配。
示例性的,若第三方相机应用中包括的相机功能占用内存大小第二阈值,确定该相机功能存在占用内存异常的情况,分析相机功能中每一小功能占用的内存大小,如,相机功能中表情包占用的内存大小,滤镜功能占用的内存大小等。因此可以确定出包括该功能的闭源库对于占用的内存的分配情况,即闭源库对占用的内存的分配位置和每一分配位置对应的内存大小。并且将确定的分配位置和每一分配位置对应的内存大小上报至对应的应用,如上述的第三方相机应用,将相机功能中表情包占用的内存大小,滤镜功能占用的内存大小等上报至第三方相机应用。
在本公开实施例中,通过该分析评估可以将第三方应用内存分配的合理性告知该第三方应用,在第三方对该应用进行优化时可以使用该内存占用的分配信息,进而有针对性的优化该应用包括的功能以及每个功能中具体的下一级功能,可以有效减少第三方对应的拆解操作,提供第三方优化应用的效率。当然,本公开仅仅是以第三方应用为例进行说明,并不是对本公开的具体限定,本公开也不仅仅适用于第三方应用,对应本终端自身的应用同样可以使用。并且可以理解的是,本公开距离的第三方相机应用也是为便于理解而进行的距离说明,本公开个适用于所有的第三方应用。
图6是根据一示例性实施例示出的一种确定应用占用内存的方法的示意图。如图6所示,在本公开实施例中,图4中的LIbA,LibB和LibC分别表示闭源库A,闭源库B和闭源库C。闭源库A,闭源库B和闭源库C同时调用内存的分配函数和释放函数,终端系统通过接收到闭源库A,闭源库B和闭源库C同时调用内存的分配函数和释放函数的指示调用内存的分配函数和释放函数。在终端系统通过接收到闭源库A,闭源库B和闭源库C同时调用内存的分配函数和释放函数的指示调用内存的分配函数和释放函数之前,首先进行钩子函数将截取闭源库A,闭源库B和闭源库C同时调用内存的分配函数和释放函数的指示,获取闭源库A,闭源库B和闭源库C各自对应的名称,分配的内存大小以及释放的内存大小。示例性的,钩子函数将闭源库A分配的内存大小以及释放的内存大小进行计算确定闭源库A实际占用的内存大小;将闭源库B分配的内存大小以及释放的内存大小进行计算确定闭源库B实际占用的内存大小;将闭源库C分配的内存大小以及释放的内存大小进行计算确定闭源库C实际占用的内存大小。之后输出闭源库A实际占用的内存大小,闭源库B实际占用的内存大小以及闭源库C实际占用的内存大小。由于终端的钩子函数可以实施确定每一闭源库占用的内存大小,因此,钩子函数可以实时输出每个闭源库实际占用的内存大小,换言之,钩子函数可以实时输出各个闭源库内存使用情况。当然,可以理解的,在本公开实施例中涉及到的闭源库A,闭源库B和闭源库C仅仅是举例说明,并不是对本公开的具体限定。
在本公开实施例中,闭源库调用内存的分配函数,系统通过分配函数分配内存可以是中央处理器(英语:central processing unit,缩写CPU)内存,图形处理器(英语:Graphics Processing Unit,缩写:GPU)内存,安卓离子分配器(英语:The Android IONmemory allocator,缩写ION)内存等其中的一种或几种进行分配。
图7是根据一示例性实施例示出的一种确定应用占用内存的方法的闭源库内存随时间变化的示意图。如图7所示,LibA,LibB,LibC,LibD,LibE分别代表闭源库A,闭源库B,闭源库C,闭源库D,闭源库E,图中横坐标中1,2,3,4,5,6,7,8,9,10,……;表示时间,纵坐标20,40,60,80,100,……,200,……;表示内存尺寸。其中时间单位可以根据实际情况选择以秒(s)为单位或者以毫秒(ms),当然,还可以以分钟(min)或者小时(h)为单位。内存尺寸可以使用字节(B),千字节(KB),兆字节(MB),吉字节(GB)其中的一种为单位。图中不同的折线对应不同的闭源库,可参照图6,随着时间的增长,不同的闭源库占用的内存大小不同,图中闭源库C和闭源库D占用的内存大小明显高于其他闭源库占用的内存大小。在对闭源库进行优化处理时,则可以优选对闭源库C和闭源库D进行优化处理。
当然图7仅仅是本公开一示例性实施例,并不是对本公开的具体限定。并且图中的横纵坐标的取值可以根据实际情况进行选择,例如,横坐标时间可以以毫秒为单位,且取值可以是,20,40,60,80,100,……;纵坐标可以选择以千字节(KB)为单位,且取值可以是100,200,300,400,500,600,……。
本公开提供的确定应用占用内存的方法,如上述实施例,可以应用在终端闭源库的内存使用的监控及统计的场景下,在内存压力测试或日常使用时,均可以对闭源库内存调用进行实时统计,从而实现对各个闭源库使用的内存进行实时统计及监控。通过对占用内存异常的闭源库进行统计和监控,可以相对清楚的掌握每个闭源库的内存使用情况。并且本公开提供的确定应用占用内存的方法可以监控每个版本下的闭源库的占用内存大小的使用情况。在监控到存在闭源库占用内存异常时,可以有针对性的对占用内存异常的闭源库进行优化处理,减少闭源库占用的内存,进而提升终端的运行性能。
基于相同的构思,本公开实施例还提供一种确定应用占用内存的装置。
可以理解的是,本公开实施例提供的确定应用占用内存的装置为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。结合本公开实施例中所公开的各示例的单元及算法步骤,本公开实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同的方法来实现所描述的功能,但是这种实现不应认为超出本公开实施例的技术方案的范围。
图8是根据一示例性实施例示出的一种确定应用占用内存的装置100框图。参照图7,应用包括多个闭源库,该装置包括第一确定模块101和第二确定模块102。
第一确定模块101,用于多个闭源库中存在至少一个闭源库用于调用内存的分配函数及释放函数,根据所述分配函数及所述释放函数,确定多个闭源库中每一闭源库的名称,分配的内存大小和释放的内存大小。第二确定模块102,用于基于每一闭源库的名称,分配的内存大小和释放的内存大小,确定每一闭源库占用的内存大小。
在本公开实施例中,第一确定模块101用于,建立与分配函数及释放函数相关联的钩子函数,钩子函数用于调用闭源库的名称,分配的内存大小和释放的内存大小。基于钩子函数确定每一闭源库的名称,分配的内存大小和释放的内存大小。其中,闭源库的名称,分配的内存大小和释放的内存大小之间存在一一对应关系。
在本公开实施例中,第二确定模块102,用于,确定所有闭源库名称,以及与闭源库名称对应的分配的内存大小和释放的内存大小。根据每一闭源库名称,以及与闭源库名称对应的分配的内存大小和释放的内存大小,确定每一闭源库占用的内存大小。
图9是根据一示例性实施例示出的一种确定应用占用内存的装置200框图。参照图8,确定应用占用内存的装置还包括:执行模块201。
执行模块201用于:响应于所有闭源库占用的内存大小之和大于或等于第一阈值,执行闭源库优化操作。
在本公开实施例中,第二确定模块102还用于:
确定第二阈值以及每一闭源库占用的内存大小的大小。确定大于或等于第二阈值的内存大小所对应的闭源库,并对大于或等于第二阈值的内存大小所对应的闭源库进行优化。
确定应用占用内存的装置还包括:
针对大于或等于第二阈值的内存大小所对应的闭源库,确定每一闭源库占用内存的分配位置,以及每一分配位置对应的内存大小;将每一闭源库占用内存的分配位置,以及每一分配位置对应的内存大小,上报至闭源库对应的应用。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图10是根据一示例性实施例示出的一种用于确定应用占用内存的装置300的框图。例如,装置300可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图10,装置300可以包括以下一个或多个组件:处理组件302,存储器304,电力组件306,多媒体组件308,音频组件310,输入/输出(I/O)接口312,传感器组件314,以及通信组件316。
处理组件302通常控制装置300的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件302可以包括一个或多个处理器320来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件302可以包括一个或多个模块,便于处理组件302和其他组件之间的交互。例如,处理组件302可以包括多媒体模块,以方便多媒体组件308和处理组件302之间的交互。
存储器304被配置为存储各种类型的数据以支持在装置300的操作。这些数据的示例包括用于在装置300上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器304可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电力组件306为装置300的各种组件提供电力。电力组件306可以包括电源管理系统,一个或多个电源,及其他与为装置300生成、管理和分配电力相关联的组件。
多媒体组件308包括在所述装置300和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件308包括一个前置摄像头和/或后置摄像头。当装置300处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件310被配置为输出和/或输入音频信号。例如,音频组件310包括一个麦克风(MIC),当装置300处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器304或经由通信组件316发送。在一些实施例中,音频组件310还包括一个扬声器,用于输出音频信号。
I/O接口312为处理组件302和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件314包括一个或多个传感器,用于为装置300提供各个方面的状态评估。例如,传感器组件314可以检测到装置300的打开/关闭状态,组件的相对定位,例如所述组件为装置300的显示器和小键盘,传感器组件314还可以检测装置300或装置300一个组件的位置改变,用户与装置300接触的存在或不存在,装置300方位或加速/减速和装置300的温度变化。传感器组件314可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件314还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件314还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件316被配置为便于装置300和其他设备之间有线或无线方式的通信。装置300可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件316经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件316还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,装置300可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器304,上述指令可由装置300的处理器320执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
可以理解的是,本公开中“多个”是指两个或两个以上,其它量词与之类似。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
进一步可以理解的是,术语“第一”、“第二”等用于描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开,并不表示特定的顺序或者重要程度。实际上,“第一”、“第二”等表述完全可以互换使用。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。
进一步可以理解的是,除非有特殊说明,“连接”包括两者之间不存在其他构件的直接连接,也包括两者之间存在其他元件的间接连接。
进一步可以理解的是,本公开实施例中尽管在附图中以特定的顺序描述操作,但是不应将其理解为要求按照所示的特定顺序或是串行顺序来执行这些操作,或是要求执行全部所示的操作以得到期望的结果。在特定环境中,多任务和并行处理可能是有利的。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (14)
1.一种确定应用占用内存的方法,其特征在于,所述应用包括多个闭源库,所述方法包括:
所述多个闭源库中存在至少一个闭源库用于调用内存的分配函数及释放函数,根据所述分配函数及所述释放函数,确定所述至少一个闭源库中每一闭源库的名称,分配的内存大小和释放的内存大小;
基于每一所述闭源库的名称,分配的内存大小和释放的内存大小,确定每一所述闭源库占用的内存大小。
2.根据权利要求1所述的确定应用占用内存的方法,其特征在于,所述确定所述多个闭源库中每一所述闭源库的名称,分配的内存大小和释放的内存大小,包括:
建立与所述分配函数及所述释放函数相关联的钩子函数,所述钩子函数用于调用闭源库的名称,分配的内存大小和释放的内存大小;
基于所述钩子函数确定每一所述闭源库的名称,分配的内存大小和释放的内存大小;
其中,闭源库的名称,分配的内存大小和释放的内存大小之间存在一一对应关系。
3.根据权利要求2所述的确定应用占用内存的方法,其特征在于,所述基于每一所述闭源库的名称,分配的内存大小和释放的内存大小,确定每一所述闭源库占用的内存大小,包括:
确定所有闭源库名称,以及与所述闭源库名称对应的分配的内存大小和释放的内存大小;
根据每一所述闭源库名称,以及与所述闭源库名称对应的分配的内存大小和释放的内存大小,确定每一所述闭源库占用的内存大小。
4.根据权利要求3所述的确定应用占用内存的方法,其特征在于,所述方法还包括:
响应于所述所有闭源库占用的内存大小之和大于或等于第一阈值,执行闭源库优化操作。
5.根据权利要求4所述的确定应用占用内存的方法,其特征在于,所述执行闭源库优化操作,包括:
确定第二阈值以及每一所述闭源库占用的内存大小;
确定大于或等于第二阈值的内存大小所对应的闭源库,并对所述大于或等于第二阈值的内存大小所对应的闭源库进行优化。
6.根据权利要求5所述的确定应用占用内存的方法,其特征在于,所述方法还包括:
针对大于或等于第二阈值的内存大小所对应的闭源库,确定每一闭源库占用内存的分配位置,以及每一所述分配位置对应的内存大小;
将每一闭源库占用内存的分配位置,以及每一所述分配位置对应的内存大小,上报至所述闭源库对应的应用。
7.一种确定应用占用内存的装置,其特征在于,所述应用包括多个闭源库,所述装置包括:
第一确定模块,用于所述多个闭源库中存在至少一个闭源库用于调用内存的分配函数及释放函数,根据所述分配函数及所述释放函数,确定所述至少一个闭源库中每一闭源库的名称,分配的内存大小和释放的内存大小;
第二确定模块,用于基于每一所述闭源库的名称,分配的内存大小和释放的内存大小,确定每一所述闭源库占用的内存大小。
8.根据权利要求7所述的确定应用占用内存的装置,其特征在于,所述第一确定模块用于:
建立与所述分配函数及所述释放函数相关联的钩子函数,所述钩子函数用于调用闭源库的名称,分配的内存大小和释放的内存大小;
基于所述钩子函数确定每一所述闭源库的名称,分配的内存大小和释放的内存大小;
其中,闭源库的名称,分配的内存大小和释放的内存大小之间存在一一对应关系。
9.根据权利要求8所述的确定应用占用内存的装置,其特征在于,所述第二确定模块,用于:
确定所有闭源库名称,以及与所述闭源库名称对应的分配的内存大小和释放的内存大小;
根据每一所述闭源库名称,以及与所述闭源库名称对应的分配的内存大小和释放的内存大小,确定每一所述闭源库占用的内存大小。
10.根据权利要求9所述的确定应用占用内存的装置,其特征在于,所述装置还包括:执行模块;
所述执行模块用于:响应于所述所有闭源库占用的内存大小之和大于或等于第一阈值,执行闭源库优化操作。
11.根据权利要求10所述的确定应用占用内存的装置,其特征在于,所述第二确定模块还用于:
确定第二阈值以及每一所述闭源库占用的内存大小;
确定大于或等于第二阈值的内存大小所对应的闭源库,并对所述大于或等于第二阈值的内存大小所对应的闭源库进行优化。
12.根据权利要求11所述的确定应用占用内存的装置,其特征在于,所述装置还包括:
针对大于或等于第二阈值的内存大小所对应的闭源库,确定每一闭源库占用内存的分配位置,以及每一所述分配位置对应的内存大小;
将每一闭源库占用内存的分配位置,以及每一所述分配位置对应的内存大小,上报至所述闭源库对应的应用。
13.一种确定应用占用内存的装置,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:执行权利要求1至6中任意一项所述的确定应用占用内存的方法。
14.一种非临时性计算机可读存储介质,当所述存储介质中的指令由移动终端的处理器执行时,使得移动终端能够执行权利要求1至6中任意一项所述的确定应用占用内存的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011189993.3A CN112416574A (zh) | 2020-10-30 | 2020-10-30 | 一种确定应用占用内存的方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011189993.3A CN112416574A (zh) | 2020-10-30 | 2020-10-30 | 一种确定应用占用内存的方法、装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112416574A true CN112416574A (zh) | 2021-02-26 |
Family
ID=74827230
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011189993.3A Pending CN112416574A (zh) | 2020-10-30 | 2020-10-30 | 一种确定应用占用内存的方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112416574A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105511963A (zh) * | 2015-11-30 | 2016-04-20 | Tcl集团股份有限公司 | 一种基于Android系统的内存优化方法及系统 |
CN107085548A (zh) * | 2016-02-16 | 2017-08-22 | 阿里巴巴集团控股有限公司 | 一种监控应用程序内存的方法、装置及电子设备 |
CN107562586A (zh) * | 2017-08-16 | 2018-01-09 | 努比亚技术有限公司 | 一种内存检测方法、设备及计算机存储介质 |
CN108228449A (zh) * | 2017-08-15 | 2018-06-29 | 珠海市魅族科技有限公司 | 终端设备控制方法及装置、终端设备及计算机可读存储介质 |
-
2020
- 2020-10-30 CN CN202011189993.3A patent/CN112416574A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105511963A (zh) * | 2015-11-30 | 2016-04-20 | Tcl集团股份有限公司 | 一种基于Android系统的内存优化方法及系统 |
CN107085548A (zh) * | 2016-02-16 | 2017-08-22 | 阿里巴巴集团控股有限公司 | 一种监控应用程序内存的方法、装置及电子设备 |
CN108228449A (zh) * | 2017-08-15 | 2018-06-29 | 珠海市魅族科技有限公司 | 终端设备控制方法及装置、终端设备及计算机可读存储介质 |
CN107562586A (zh) * | 2017-08-16 | 2018-01-09 | 努比亚技术有限公司 | 一种内存检测方法、设备及计算机存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108427618B (zh) | 卡顿状态确定方法、装置及计算机可读存储介质 | |
CN113220482A (zh) | 调用请求处理方法、装置、电子设备及存储介质 | |
EP3499350A1 (en) | Display interface control method and device | |
EP3015983A1 (en) | Method and device for optimizing memory | |
CN111240694A (zh) | 应用检测方法、应用检测装置及存储介质 | |
CN112256563B (zh) | 安卓应用稳定性测试方法、装置、电子设备及存储介质 | |
CN109062625B (zh) | 应用程序加载的方法、装置及可读存储介质 | |
CN106021130A (zh) | 内存处理方法及装置 | |
CN106535147B (zh) | 通信信号处理方法及装置 | |
CN105786561B (zh) | 进程调用的方法及装置 | |
CN112035246A (zh) | 虚拟资源的获取方法、装置、系统、电子设备及存储介质 | |
CN110908814A (zh) | 消息处理方法、装置、电子设备及存储介质 | |
CN112416574A (zh) | 一种确定应用占用内存的方法、装置及存储介质 | |
CN111736997B (zh) | 内存分配方法、装置、电子设备及存储介质 | |
CN114780334A (zh) | 功耗监测方法、功耗监测装置及存储介质 | |
CN106878110A (zh) | 数据流量的监控方法、装置及设备 | |
CN108427582B (zh) | 卡顿状态确定方法、装置及计算机可读存储介质 | |
CN106502719A (zh) | 管理应用程序的组件的方法及装置 | |
CN112817844A (zh) | 后台进程驻留测试方法、装置、设备及存储介质 | |
CN107391128B (zh) | 监控虚拟文件对象模型vdom的方法和装置 | |
CN107122286B (zh) | 统计事件信息的方法及装置 | |
CN113805763A (zh) | 权限授权方法、装置及存储介质 | |
CN112363917B (zh) | 应用程序调试异常的处理方法、装置、电子设备及介质 | |
CN110784721A (zh) | 一种图片数据压缩方法、装置、电子设备及存储介质 | |
CN112506628B (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 |