CN111338796B - 应用内存优化方法、装置、终端设备及可读存储介质 - Google Patents
应用内存优化方法、装置、终端设备及可读存储介质 Download PDFInfo
- Publication number
- CN111338796B CN111338796B CN202010100112.XA CN202010100112A CN111338796B CN 111338796 B CN111338796 B CN 111338796B CN 202010100112 A CN202010100112 A CN 202010100112A CN 111338796 B CN111338796 B CN 111338796B
- Authority
- CN
- China
- Prior art keywords
- memory
- application process
- pressure value
- virtual
- occupation
- 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
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
Abstract
本申请提供一种应用内存优化方法、装置、终端设备及可读存储介质,涉及内存资源回收领域。本申请在对目标应用程序的每个应用进程进行内存资源回收处理时,通过对该应用进程的内存资源占用量进行查询,并根据查询到的内存资源占用量数据计算对应的内存占用压力值,而后判断该内存占用压力值是否位于与该应用进程对应的待优化压力值范围内,并在判定该内存占用压力值位于待优化压力值范围内时,对该应用进程所占用的内存资源进行内存释放,直至内存占用压力值位于待优化压力值范围之外,从而在合适时机对应用程序的进程进行内存资源回收,确保应用程序得以长久地持续运行,并降低终端设备出现卡顿及黑屏等现象的可能性,提高用户体验。
Description
技术领域
本申请涉及内存资源回收领域,具体而言,涉及一种应用内存优化方法、装置、终端设备及可读存储介质。
背景技术
随着科学技术的不断发展,智能手机、平板电脑等终端设备逐渐成为人们日常生活中经常使用的电子设备,而终端设备通常可以安装多个应用程序,并在需要同时运行大量应用程序时,通过将各应用程序的数据缓存在内存中,提高对数据进行读写操作的速度。但就实际而言,终端设备的内存资源数量是有限的,目前市面上的应用程序大多数是不注重对所占用内存资源的分配及回收,无法长久运行,通常会导致终端设备向目标应用程序提供的虚拟内存资源或物理内存资源无法得到合适的分配及回收,容易致使终端设备因留给自身系统运行的内存资源存在不足,或者应用程序所占用内存资源超过系统分配资源的阈值,而出现运行卡顿、黑屏现象,并通过运行GC(GabageCollection,垃圾回收)机制将对应应用程序杀死的方式来回收内存资源。
发明内容
有鉴于此,本申请的目的在于提供一种应用内存优化方法、装置、终端设备和可读存储介质,其能够在合适时机对应用程序的进程进行内存资源回收,确保应用程序得以长久地持续运行,并降低终端设备出现卡顿及黑屏等现象的可能性,提高用户体验。
为了实现上述目的,本申请实施例采用的技术方案如下:
第一方面,本申请实施例提供一种应用内存优化方法,应用于终端设备,所述方法包括:
针对在所述终端设备上运行的与目标应用程序对应的每个应用进程,查询该应用进程对应的内存资源占用量;
根据查询到的内存资源占用量计算该应用进程的内存占用压力值,其中所述内存占用压力值用于表示对应应用进程的内存资源占用量给终端设备运行造成的压力状况;
判断所述内存占用压力值是否位于与该应用进程对应的待优化压力值范围内;
当判定所述内存占用压力值位于所述待优化压力值范围内时,对该应用进程所占用的内存资源进行内存释放,直至所述内存占用压力值位于所述待优化压力值范围之外。
第二方面,本申请实施例提供一种应用内存优化装置,应用于终端设备,所述装置包括:
内存占用查询模块,用于针对在所述终端设备运行的与目标应用程序对应的每个应用进程,查询该应用进程对应的内存资源占用量;
内存压力计算模块,用于根据查询到的内存资源占用量计算该应用进程的内存占用压力值,其中所述内存占用压力值用于表示对应应用进程的内存资源占用量给终端设备运行造成的压力状况;
内存优化判断模块,用于判断所述内存占用压力值是否位于与该应用进程对应的待优化压力值范围内;
内存资源优化模块,用于在判定所述内存占用压力值位于所述待优化压力值范围内时,对该应用进程所占用的内存资源进行内存释放,直至所述内存占用压力值位于所述待优化压力值范围之外。
第三方面,本申请实施例提供一种终端设备,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的机器可执行指令,所述处理器可执行所述机器可执行指令,以实现前述实施方式所述的应用内存优化方法。
第四方面,本申请实施例提供一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现前述实施方式所述的应用内存优化方法。
相对于背景技术而言,本申请具有以下有益效果:
本申请在对目标应用程序所对应的每个应用进程进行处理时,通过对该应用进程的内存资源占用量进行查询,并根据查询到的内存资源占用量数据计算该应用进程的内存占用压力值,而后判断该内存占用压力值是否位于与该应用进程对应的待优化压力值范围内,并在判定该内存占用压力值位于待优化压力值范围内时,对该应用进程所占用的内存资源进行内存释放,直至对应的内存占用压力值位于该待优化压力值范围之外,从而在合适时机对应用程序的进程进行内存资源回收,确保应用程序得以长久地持续运行,并降低终端设备出现卡顿及黑屏等现象的可能性,提高用户体验。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的终端设备的结构组成示意图;
图2为本申请实施例提供的应用内存优化方法的流程示意图;
图3为图2中的步骤S220包括的子步骤的流程示意图;
图4为图2中的步骤S240包括的子步骤的流程示意图之一;
图5为图4中的子步骤S244包括的子步骤的流程示意图之一;
图6为图4中的子步骤S244包括的子步骤的流程示意图之二;
图7为图4中的子步骤S244包括的子步骤的流程示意图之三;
图8为图4中的子步骤S245包括的子步骤的流程示意图之一;
图9为图4中的子步骤S245包括的子步骤的流程示意图之二;
图10为图4中的子步骤S245包括的子步骤的流程示意图之三;
图11为图2中的步骤S240包括的子步骤的流程示意图之二;
图12为图11中的子步骤S247包括的子步骤的流程示意图之一;
图13为图11中的子步骤S247包括的子步骤的流程示意图之二;
图14为本申请实施例提供的应用内存优化装置的功能模块示意图。
图标:10-终端设备;11-存储器;12-处理器;13-通信单元;100-应用内存优化装置;110-内存占用查询模块;120-内存压力计算模块;130-内存优化判断模块;140-内存资源优化模块。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,术语“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
请参照图1,图1是本申请实施例提供的终端设备10的结构组成示意图。在本申请实施例中,所述终端设备10可运行有多个应用程序,并针对每个应用程序所包括的应用进程确定其对应的内存资源回收时机,从而在合适时机下对相应的应用程序的进程进行内存资源回收,确保该应用程序得以长久地持续运行,并降低终端设备10出现卡顿及黑屏等现象的可能性,提高用户体验。其中,所述终端设备10可以是,但不限于,智能手机、平板电脑及智能手表等,运行在所述终端设备10上的应用程序可以包括至少一个应用进程,所述应用程序可以是Android APP,也可以是IOS APP,还可以是Windows Phone APP。
在本实施例中,所述终端设备10包括应用内存优化装置100、存储器11、处理器12及通信单元13。所述存储器11、所述处理器12及所述通信单元13各个元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,所述存储器11、所述处理器12及所述通信单元13这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。
在本实施例中,所述存储器11可用于存储应用程序,所述处理器12在接收到执行指令后,可相应地执行对应的应用程序。其中,所述存储器11可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-Only Memory,PROM),可擦除只读存储器(ErasableProgrammable Read-Only Memory,EPROM),电可擦除只读存储器(Electric ErasableProgrammable Read-Only Memory,EEPROM)等。此外,所述存储器11还用于存储不同应用程序各自匹配的用于实现内存资源回收的内存优化策略,使所述处理器12在需要对某个应用程序的某个应用进程进行内存资源回收时,能够通过查找对应匹配的内存优化策略并执行的方式,完成对该应用程序的目标应用进程进行内存资源回收操作。
在本实施例中,所述处理器12可以是一种具有信号的处理能力的集成电路芯片。所述处理器12可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)及网络处理器(Network Processor,NP)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。
在本实施例中,所述通信单元13用于通过网络建立所述终端设备10与其他电子设备之间的通信连接,并通过该网络收发数据。例如,所述终端设备10通过该通信单元13与存储有应用程序安装包的服务器通信连接,并从该服务器处下载需要的应用程序安装包进行程序安装。
在本实施例中,所述应用内存优化装置100包括至少一个能够以软件或固件的形式存储于所述存储器11中或固化在所述终端设备10的操作系统中的软件功能模块。所述处理器12可用于执行所述存储器11存储的可执行模块,例如所述应用内存优化装置100所包括的软件功能模块及计算机程序等。所述终端设备10通过所述应用内存优化装置100在合适时机对目标应用程序的进程进行内存资源回收,使该目标应用程序的内存占用量与内存回收量得以保持平衡,终端设备10具有足够内存空闲资源,从而确保该应用程序能够长久地持续运行,降低终端设备10出现卡顿及黑屏等现象的可能性,提高用户体验。
可以理解的是,图1所示的结构组成示意图仅为终端设备10的一种示意图,所述终端设备10还可包括比图1中所示更多或更少的组件,或具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。
在本申请中,为确保所述终端设备10能够在合适时机对应用程序的进程进行内存资源回收,以延长该应用程序的可运行时长,降低终端设备10出现卡顿或黑屏等现象的可能性,提高用户体验,本申请通过提供应用于上述终端设备10的应用内存优化方法实现上述功能。下面对本申请提供的应用内存优化方法进行相应描述。
可选地,请参照图2,图2是本申请实施例提供的应用内存优化方法的流程示意图。在本申请实施例中,图2所示的应用内存优化方法的具体流程和步骤如下文所示。
步骤S210,针对在终端设备上运行的与目标应用程序对应的每个应用进程,查询该应用进程的内存资源占用量。
在本实施例中,运行在所述终端设备10上的应用程序具有至少一个应用进程,所述第一功能模块为对应应用进程在按照第一模块划分方式进行模块划分得到,所述第二功能模块为对应应用进程在按照第二模块划分方式进行模块划分得到。其中,第一模块划分方式与第二模块划分方式相比,第一模块划分方式属于粗放式划分,所述第二模块划分方式属于精细式划分,基于同一应用进程得到的第二功能模块的数目大于第一功能模块的数目。
在此情况下,所述终端设备10可通过函数调用的方式查询目标应用程序所对应的每个应用进程的内存资源占用量,其中所述内存资源占用量可以仅包括对应应用进程下的每个第一功能模块的物理内存占用量,也可以仅包括对应应用进程下的每个第二功能模块的虚拟内存占用量,还可以同时包括对应应用进程下的所有第一功能模块的物理内存占用量及所有第二功能模块的虚拟内存占用量。
下面以Android APP为例,对通过调用函数实现步骤S210的具体流程进行相关描述。
在Android APP中,该Android APP的某个应用进程在按照第一模块划分方式进行功能模块划分时,可被划分为多个第一功能模块,包括Native Heap,Dalvik Heap,显存,及多个mmap模块。而该应用进程在按照第二模块划分方式进行功能没空划分时,可被划分为art虚拟机Heap、Native Heap及各细化功能模块。而后可在Android应用端处通过binder调用服务端接口ActivityManagerService.getProcessMemoryInfo.(int[]pids)针对该应用进程进行内存占用状况查询。
其中,可通过调用memoryInfoPid.nativePss函数查询对应应用进程下的NativeHeap的物理内存占用量;可通过调用memoryInfoPid.dalvikPss函数查询对应应用进程下的Dalvik Heap的物理内存占用量;可通过调用memoryInfoPid.getMemoryStat().get(“summary.graphics”)函数查询对应应用进程下的显存的物理内存占用量;可通过调用memoryInfoPid.getMemoryStat().get(“summary.code”)函数查询对应应用进程下的各mmap模块的物理内存占用量;可通过调用memoryInfoPid.getMemoryStat().get(“summary.total-pss”)函数查询对应应用进程的总物理内存占用量。
其中,可通过系统提取工具pmap获取内存分配表,比如adb shell"pmap-x pid",而后通过脚本解析内存分配表,得到各细化功能模块的虚拟内存占用情况排名,其中该虚拟内存占用情况排名中记录有/dev/ashmem/dalvik-mainspace(region space)大小,[anon:libc_malloc]大小,[anon]大小等等;可通过调用Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory()函数获得对应应用进程下的art虚拟机Heap的虚拟内存占用量大小;可通过调用Debug.getNativeHeapAllocatedSize()函数获得对应应用进程下的NativeHeap的虚拟内存占用量大小。
步骤S220,根据查询到的内存资源占用量计算该应用进程的内存占用压力值。
在本实施例中,所述内存占用压力值用于表示对应应用进程的内存资源占用量给终端设备10运行造成的压力状况。所述内存占用压力值的数值越大,终端设备10对该内存占用压力值所对应的应用进程进行内存资源回收的可能性越大。
其中,当终端设备10查询到的某个应用进程的内存资源占用量仅包括该应用进程下的所有第一功能模块的物理内存占用量时,所述终端设备10可通过计算该应用进程下的所有第一功能模块的物理内存占用量之和,并将得到的物理内存占用量和值与所述终端设备10的物理内存总量进行比值运算,得到对应的内存占用压力值。
在此情况下,所述终端设备10也可根据预先配置的该应用进程下的每个第一功能模块各自对应的物理内存预设量,计算该应用进程下的每个第一功能模块的物理内存占用量与物理内存预设量之间的差值,得到每个第一功能模块的第一内存量差值,而后根据该应用进程下的每个第一功能模块的第一预设加权值,对该应用进程下的所有第一内存量差值进行加权求和运算,得到对应的内存占用压力值。其中,所述物理内存预设量用于表示对应第一功能模块在正常运行时所占用的物理内存的最大经验值,所述第一预设加权值用于表示对应第一功能模块在整个应用进程的物理内存占用过程中的影响度大小,所述第一内存量差值用于表示对应第一功能模块的真实物理内存占用量与物理内存预设量之间的差值。
当终端设备10查询到的某个应用进程的内存资源占用量仅包括该应用进程下的所有第二功能模块的虚拟内存占用量时,所述终端设备10可通过计算该应用进程下的所有第二功能模块的虚拟内存占用量之和,并将得到的虚拟内存占用量和值与所述终端设备10的虚拟内存总量进行比值运算,得到对应的内存占用压力值。
在此情况下,所述终端设备10也可根据预先配置的该应用进程下的每个第二功能模块各自对应的虚拟内存预设量,及在所有第二功能模块中预设地占据重要地位的预设重要模块的目标内存预设量,计算该应用进程下的每个第二功能模块的虚拟内存占用量与虚拟内存预设量之间的差值和每个预设重要模块的虚拟内存占用量与目标内存预设量之间的差值,得到每个第二功能模块的第二内存量差值以及每个预设重要模块的第三内存量差值,而后根据该应用进程下的每个第二功能模块的第二预设加权值及每个预设重要模块的第三预设加权值,对该应用进程下的所有第二内存量差值及所有第三内存量差值进行加权求和运算,得到对应的内存占用压力值。其中,所述虚拟内存预设量用于表示对应第二功能模块在正常运行时所占用的虚拟内存的最大经验值,所述第二预设加权值用于表示对应第二功能模块在整个应用进程的虚拟内存占用过程中的影响度大小,所述目标内存预设量用于表示对应预设重要模块在正常运行时所占用的虚拟内存的最大经验值,所述第三预设加权值用于表示对应预设重要模块在整个应用进程的虚拟内存占用过程中的影响度大小。
步骤S230,判断内存占用压力值是否位于与该应用进程对应的待优化压力值范围内。
在本实施例中,所述待优化压力值范围用于表示对应应用进程需要进行内存资源回收时的内存占用压力数值范围,其可以是单独的一个具有下限数值的数值范围(例如,(a,∞)),也可以由连续的多个数值范围组成(例如,(a,b)和(b,∞))。其中,不同的应用进程所对应的待优化压力值范围可以相同,也可以不同。所述终端设备10通过将计算出的内存占用压力值与待优化压力值范围进行比较的方式,判断所述内存占用压力值是否位于待优化压力值范围内。
步骤S240,当判定内存占用压力值位于待优化压力值范围内时,对该应用进程所占用的内存资源进行内存释放,直至内存占用压力值位于待优化压力值范围之外。
在本实施例中,当判定内存占用压力值处于待优化压力值范围内时,所述终端设备10将根据计算内存占用压力值时采用的内存占用类型,对该应用进程进行与该内存占用类型匹配的内存资源进行资源回收处理,并在资源回收后重新执行步骤S210、步骤S220及步骤S230,以判断资源回收后的内存占用压力值是否处于对应的待优化压力值范围内,而后在仍处于待优化压力值范围内时再次执行步骤S240,直至最终的内存占用压力值位于待优化压力值范围之外,从而完成相应的内存资源回收操作,使该目标应用程序的进程得以在合适时机被执行内存资源回收操作,确保该目标应用程序得以长久地持续运行,降低终端设备10出现卡顿及黑屏等现象的可能性,提高用户体验。
其中,当所述内存占用压力值仅基于对应应用进程的物理内存占用量计算得到,且该内存占用压力值处于对应的待优化压力值范围内时,所述终端设备10将会对该应用进程所占用的物理内存资源进行资源回收处理。所述终端设备10对物理内存资源进行资源回收时,可以是将对应应用进程下的所有第一功能模块各自占用的物理内存资源进行部分资源回收,也可以是将对应应用进程下的部分第一功能模块所占用的物理内存资源进行全部资源回收,还可以是将对应应用进程下的部分第一功能模块所占用的物理内存资源进行部分回收。具体的物理内存资源回收方案可根据需求进行不同的配置。
当所述内存占用压力值仅基于对应应用进程的虚拟内存占用量计算得到,且该内存占用压力值处于对应的待优化压力值范围内时,所述终端设备10将会对该应用进程所占用的虚拟内存资源进行资源回收处理。所述终端设备10对虚拟内存资源进行资源回收时,可以是将对应应用进程下的所有第二功能模块各自占用的虚拟内存资源进行部分资源回收,也可以是将对应应用进程下的部分第二功能模块(可以是预设重要模块和/或非预设重要模块)所占用的虚拟内存资源进行全部资源回收,还可以是将对应应用进程下的部分第二功能模块(可以是预设重要模块和/或非预设重要模块)所占用的虚拟内存资源进行部分回收。具体的虚拟内存资源回收方案可根据需求进行不同的配置。
在本申请实施例中,当所述终端设备10获取到的目标应用程序的某个应用进程所对应的物理内存占用量及虚拟内存占用量时,为确保终端设备10针对该应用进程计算得到的内存占用压力值是物理内存占用量与虚拟内存占用量综合得到的,本申请通过提供基于物理内存占用量及虚拟内存占用量计算内存占用压力值的详细流程实现上述功能。下面对本申请提供的基于物理内存占用量及虚拟内存占用量计算内存占用压力值的详细流程进行相应描述。
可选地,请参照图3,图3是图2中的步骤S220包括的子步骤的流程示意图。在本申请实施例中,当所述终端设备10获取到某个应用进程下的所有第一功能模块的物理内存占用量,以及该应用进程下的所有第二功能模块的虚拟内存占用量时,步骤S220可以包括子步骤S221~子步骤S225。
子步骤S221,在该应用进程下的所有第二功能模块的虚拟内存占用量中,提取出与预设重要模块对应的目标内存占用量。
子步骤S222,分别计算该应用进程下的每个第一功能模块的第一内存量差值、每个第二功能模块的第二内存量差值以及每个预设重要模块的第三内存量差值。
子步骤S223,根据该应用进程下的每个第一功能模块的第一预设加权值,对该应用进程下的所有第一内存量差值进行加权求和运算,得到与该应用进程对应的物理内存压力值。
子步骤S224,根据该应用进程下的每个第二功能模块的第二预设加权值及每个预设重要模块的第三预设加权值,对该应用进程下的所有第二内存量才差值及所有第三内存量差值进行加权求和运算,得到与该应用进程对应的虚拟内存压力值。
子步骤S225,对与该应用进程对应的物理内存压力值及虚拟内存压力值进行求和运算,得到该应用进程的内存占用压力值。
其中,所述第一内存量差值用于表示对应第一功能模块的真实物理内存占用量与物理内存预设量之间的差值,所述第二内存量差值用于表示对应第二功能模块的真实虚拟内存占用量与虚拟内存预设量之间的差值,所述第三内存量差值用于表示对应预设重要模块的真实目标内存占用量与目标内存预设量之间的差值。所述物理内存压力值用于表示对应应用进程所占用的物理内存资源在其占用的所有内存资源(包括物理内存资源及虚拟内存资源)中的影响度大小,所述虚拟内存压力值用于表示对应应用进程所占用的虚拟内存资源在其占用的所有内存资源中的影响度大小。
在本申请实施例中,当所述终端设备10根据目标应用程序的某个应用进程的物理内存占用量及虚拟内存占用量,计算出该应用进程的内存占用压力值,且该应用进程的内存占用压力值处于对应的待优化压力范围内时,为确保所述终端设备10能够选取合适的内存资源类型(包括物理内存和/虚拟内存)进行内存资源回收,本申请通过提供根据内存占用压力值进行内存释放的具体流程实现上述功能。下面对本申请提供的根据内存占用压力值进行内存释放的具体流程进行相应描述。
可选地,请参照图4,图4是图2中的步骤S240包括的子步骤的流程示意图之一。在本实施例中,若待优化应用进程所对应的待优化压力值范围至少包括第一压力值范围,则所述步骤S240中对该应用进程所占用的内存资源进行内存释放的步骤可以包括子步骤S241~子步骤S245。
子步骤S241,检测内存占用压力值是否处于第一压力值范围内。
在本实施例中,所述终端设备10可通过将待优化应用进程的内存占用压力值与其对应的第一压力值范围进行数值比较的方式,检测该内存占用压力值是否处于第一压力值范围内,并在检测到该内存占用压力值是否处于第一压力值范围内时,执行子步骤S242及子步骤S243。
子步骤S242,判断物理内存压力值是否不小于预设物理压力阈值。
在本实施例中,所述预设物理压力阈值用于判断基于物理内存占用量及虚拟内存占用量计算出的内存占用压力值所对应的应用进程占用的物理内存资源是否需要进行资源回收。当对应的内存占用压力值下的物理内存压力值不小于预设物理压力阈值时,判定需要对该内存占用压力值所对应的应用进程进行物理内存资源回收,此时所述终端设备10将对应执行子步骤S242。其中,不同应用进程所对应的预设物理压力阈值可以相同,也可以不同。
子步骤S243,判断虚拟内存压力值是否不小于预设虚拟压力阈值。
在本实施例中,所述预设虚拟压力阈值用于判断基于物理内存占用量及虚拟内存占用量计算出的内存占用压力值所对应的应用进程占用的虚拟内存资源是否需要进行资源回收。当对应的内存占用压力值下的虚拟内存压力值不小于预设虚拟压力阈值时,判定需要对该内存占用压力值所对应的应用进程进行虚拟内存资源回收,此时所述终端设备10将对应执行子步骤S245。其中,不同应用进程所对应的预设虚拟压力阈值可以相同,也可以不同。
可以理解的是,当某个应用进程的内存占用压力值处于第一压力值范围内时,该内存占用压力值下的物理内存压力值不小于对应的预设物理压力阈值,和/或该内存占用压力值下的虚拟内存压力值不小于对应的预设虚拟压力阈值。
子步骤S244,获取针对物理内存资源的与该应用进程对应的第一优化策略,并按照第一优化策略对该应用进程所占用的物理内存资源进行内存释放。
在本实施例中,所述第一优化策略为对应应用进程如何进行物理内存资源回收的具体方案。所述终端设备10在确定出某个应用进程的内存占用压力值下的物理内存压力值不小于对应的预设物理压力阈值时,可通过在存储器11中查询与该应用进程对应的第一优化策略或通过网络获取与该应用进程对应的第一优化策略,并按照确定出的第一优化策略对该应用进程所占用的物理内存资源进行内存释放。
子步骤S245,获取针对虚拟内存资源的与该应用进程对应的第二优化策略,并按照第二优化策略对该应用进程所占用的虚拟内存资源进行内存释放。
在本实施例中,所述第二优化策略为对应应用进程如何进行虚拟内存资源回收的具体方案。所述终端设备10在确定出某个应用进程的内存占用压力值下的虚拟内存压力值不小于对应的预设虚拟压力阈值时,可通过在存储器11中查询与该应用进程对应的第二优化策略或通过网络获取与该应用进程对应的第二优化策略,并按照确定出的第二优化策略对该应用进程所占用的虚拟内存资源进行内存释放。
在本实施例中,所述第一优化策略可以根据需求进行不同的配置。下面对本申请提供的按照第一优化策略对对应应用进程所占用的物理内存资源进行内存释放的几种实施方式进行相应描述。
可选地,请参照图5,图5是图4中的子步骤S244包括的子步骤的流程示意图之一。在本实施例的第一种实施方式中,子步骤S244可以包括子步骤S2441及子步骤S2442。
子步骤S2441,根据终端设备的物理内存剩余量,确定终端设备的物理内存紧缺等级,并确定该应用进程的与物理内存紧缺等级匹配的物理内存释放量。
子步骤S2442,将物理内存释放量平摊到该应用进程下的第一内存量差值为正数的第一功能模块上进行物理内存释放。
其中,所述终端设备10可存储有预设的不同物理内存剩余量与物理内存紧缺等级之间的对应关系,以及每个应用进程在不同物理内存紧缺等级下对应的用于表示需要释放的物理内存资源大小的物理内存释放量。所述终端设备10可通过数据查询的方式确定与当前物理内存剩余量对应的物理内存紧缺等级,以及对应应用进程在当前物理内存紧缺等级下的物理内存释放量,而后根据确定出的物理内存释放量在该应用进程下的第一内存量差值为正数的第一功能模块上进行均摊式物理内存资源回收,以确保整个应用进程下的所有第一功能模块均能正常运行。
可选地,请参照图6,图6是图4中的子步骤S244包括的子步骤的流程示意图之二。在本实施例的第二种实施方式中,子步骤S244可以包括子步骤S2443及子步骤S2444。
子步骤S2443,在该应用进程下的所有第一内存量差值为正数的第一功能模块中选取至少一个目标第一功能模块。
子步骤S2444,针对每个目标第一功能模块,按照该目标第一功能模块对应的第一内存量差值对该目标第一功能模块进行物理内存释放。
其中,所述终端设备10在选取目标第一功能模块时,可以是随机选取的,也可以是根据同一应用进程下的各第一功能模块的重要度排名情况选取最不重要的一个或多个。
可选地,请参照图7,图7是图4中的子步骤S244包括的子步骤的流程示意图之三。在本实施例的第三种实施方式中,子步骤S244可以包括子步骤S2445、子步骤S2446及子步骤S2447。
子步骤S2445,根据终端设备的物理内存剩余量,确定终端设备的物理内存紧缺等级,并确定该应用进程的与物理内存紧缺等级匹配的物理内存释放量。
子步骤S2446,对该应用进程下的所有第一内存量差值为正数的第一功能模块按照从弱到强的顺序进行重要度排序,得到对应的物理重要度排序结果。
子步骤S2447,依次对物理重要度排序结果所记录的每个第一功能模块按照其对应的第一内存量差值进行物理内存释放,直至最终释放的物理内存总量等于物理内存释放量。
在本实施例中,所述第二优化策略可以根据需求进行不同的配置。下面对本申请提供的按照第二优化策略对对应应用进程所占用的虚拟内存资源进行内存释放的几种实施方式进行相应描述。
可选地,请参照图8,图8是图4中的子步骤S245包括的子步骤的流程示意图之一。在本实施例的第一种实施方式中,子步骤S245可以包括子步骤S2451及子步骤S2452。
子步骤S2451,根据终端设备的虚拟内存剩余量,确定终端设备的虚拟内存紧缺等级,并确定该应用进程的与虚拟内存紧缺等级匹配的虚拟内存释放量。
子步骤S2452,将物理内存释放量平摊到该应用进程下的第二内存量差值为正数的第二功能模块上进行虚拟内存释放。
其中,所述终端设备10可存储有预设的不同虚拟内存剩余量与虚拟内存紧缺等级之间的对应关系,以及每个应用进程在不同虚拟内存紧缺等级下对应的用于表示需要释放的虚拟内存资源大小的虚拟内存释放量。所述终端设备10可通过数据查询的方式确定与当前虚拟内存剩余量对应的虚拟内存紧缺等级,以及对应应用进程在当前虚拟内存紧缺等级下的虚拟内存释放量,而后根据确定出的虚拟内存释放量在该应用进程下的第二内存量差值为正数的第二功能模块上进行均摊式虚拟内存资源回收,以确保整个应用进程下的所有第二功能模块均能正常运行。
可选地,请参照图9,图9是图4中的子步骤S245包括的子步骤的流程示意图之二。在本实施例的第二种实施方式中,子步骤S245可以包括子步骤S2453及子步骤S2454。
子步骤S2453,在该应用进程下的所有第二内存量差值为正数的第二功能模块中选取至少一个目标第二功能模块。
子步骤S2454,针对每个目标第二功能模块,按照该目标第二功能模块对应的第二内存量差值对该目标第二功能模块进行虚拟内存释放。
其中,所述终端设备10在选取目标第二功能模块时,可以是随机选取的,也可以是根据同一应用进程下的各第二功能模块的重要度排名情况选取最不重要的一个或多个。
可选地,请参照图10,图10是图4中的子步骤S245包括的子步骤的流程示意图之三。在本实施例的第三种实施方式中,子步骤S245可以包括子步骤S2455、子步骤S2456及子步骤S2457。
子步骤S2455,根据终端设备的虚拟内存剩余量,确定终端设备的虚拟内存紧缺等级,并确定该应用进程的与虚拟内存紧缺等级匹配的虚拟内存释放量。
子步骤S2456,对该应用进程下的除预设重要模块之外的所有第二内存量差值为正数的第二功能模块按照从弱到强的顺序进行重要度排序,得到对应的虚拟重要度排序结果。
子步骤S2457,依次对虚拟重要度排序结果所记录的每个第二功能模块按照其对应的第二内存量差值进行虚拟内存释放,直至最终释放的虚拟内存总量等于虚拟内存释放量。
可选地,请参照图11,图11是图2中的步骤S240包括的子步骤的流程示意图之二。在本实施例中,若待优化应用进程所对应的待优化压力值范围除了第一压力值范围还包括第二压力值范围,其中第二压力值范围的下限压力值等于所述第一压力值范围的上限压力值,此时所述第一压力值范围的内存释放紧迫程度低于所述第一压力值范围的内存释放紧迫程度,则所述步骤S240中对该应用进程所占用的内存资源进行内存释放的步骤还可以包括子步骤S246及子步骤S247。
子步骤S246,检测内存占用压力值是否处于第二压力值范围内。
在本实施例中,当某个应用进程所对应内存占用压力值处于待优化压力值范围内,而所述终端设备10在执行子步骤S241时判定该内存占用压力值不处于第一压力值范围内时,所述终端设备10将通过将该内存占用压力值与第二压力值范围进行比较的方式,执行子步骤S246。当该内存占用压力值处于第二压力值范围内时,所述终端设备10将对应执行子步骤S247,而当该内存占用压力值既不处于第一压力值范围内也不处于第二压力值范围内时,表明该内存占用压力值实质上并不处于待优化压力值范围内,所述终端设备10无需对该应用进程进行内存资源回收处理。
子步骤S247,获取针对物理内存资源及虚拟内存资源的与该应用进程对应的第三优化策略,并按照第三优化策略对该应用进程所占用的物理内存资源及虚拟内存资源进行内存释放。
在本实施例中,所述第三优化策略为对应应用进程如何同时进行激进式物理内存资源回收及激进式虚拟内存资源回收的具体方案。所述终端设备10在确定出某个应用进程的内存占用压力值处于对应的第二压力值范围时,可通过在存储器11中查询与该应用进程对应的第三优化策略或通过网络获取与该应用进程对应的第三优化策略,并按照确定出的第三优化策略对该应用进程所占用的物理内存资源及虚拟内存资源进行内存释放。
在本实施例中,所述第三优化策略可以根据需求进行不同的配置。下面对本申请提供的按照第三优化策略对对应应用进程所占用的物理内存资源及虚拟内存资源进行内存释放的几种实施方式进行相应描述。
可选地,请参照图12,图12是图11中的子步骤S247包括的子步骤的流程示意图之一。在本实施例的第一种实施方式中,子步骤S247可以包括子步骤S2471及子步骤S2472。
子步骤S2471,确定该应用进程下的与目标应用程序的进程缓存对应的第一功能模块及第二功能模块。
子步骤S2472,对确定出的第一功能模块所占用的所有物理内存资源进行内存释放,并对确定出的第二功能模块所占用的所有虚拟内存资源进行内存释放。
其中,所述进程缓存用于表示对应应用程序运行时通过进程实现数据缓存的具体缓存占用空间。所述终端设备10通过执行子步骤S2471及子步骤S2472可以释放对应应用进程的与数据缓存相关的所有功能模块所占用的内存资源(包括物理内存资源及虚拟内存资源),从而大幅度降低该应用进程被杀掉的风险。
可选地,请参照图13,图13是图11中的子步骤S247包括的子步骤的流程示意图之二。在本实施例的第二种实施方式中,子步骤S247可以包括子步骤S2473及子步骤S2474。
子步骤S2473,确定该应用进程下的与目标应用程序当前的运行界面无关联关系的所有第一功能模块及所有第二功能模块。
子步骤S2474,对确定出的第一功能模块所占用的所有物理内存资源进行内存释放,并对确定出的第二功能模块所占用的所有虚拟内存资源进行内存释放。
其中,所述终端设备10通过执行子步骤S2473及子步骤S2474可以释放对应应用进程的除用于维持目标应用程序当前的运行界面所需的内存资源以外的所有被占用内存资源(包括物理内存资源及虚拟内存资源),从而大幅度降低该应用进程被杀掉的风险。
在本申请中,当所述终端设备10采用上述应用内存优化方法对每个应用程序进行内存资源回收处理的情况下,仍然出现某个应用程序在长时间运行下崩溃的现象时,所述终端设备10可对该应用程序在崩溃时存活的线程数、hprof文件、系统内存信息及GPU内存分配表进行信息抓取,并将抓取到的信息传输给用于生成内存资源回收方案的服务器,使该服务器针对与该应用程序对应的内存资源回收方案进行方案修正,并将修正后的内存资源回收方案回传给该终端设备10进行使用。
在本申请中,为确保图2所示的应用内存优化方法能够在所述终端设备10上正常运行,本申请提供一种应用于上述终端设备10的应用内存优化装置100实施图2所示的应用内存优化方法,下面对本申请提供的应用内存优化装置100的具体组成进行相应描述。
可选地,请参照图14,图14是本申请实施例提供的应用内存优化装置100的功能模块示意图。在本申请实施例中,所述应用内存优化装置100包括内存占用查询模块110、内存压力计算模块120、内存优化判断模块130及内存资源优化模块140。
所述内存占用查询模块110,用于针对在终端设备运行的与目标应用程序对应的每个应用进程,查询该应用进程对应的内存资源占用量。
所述内存压力计算模块120,用于根据查询到的内存资源占用量计算该应用进程的内存占用压力值,其中内存占用压力值用于表示对应应用进程的内存资源占用量给终端设备运行造成的压力状况。
所述内存优化判断模块130,用于判断内存占用压力值是否位于与该应用进程对应的待优化压力值范围内。
所述内存资源优化模块140,用于在判定内存占用压力值位于待优化压力值范围内时,对该应用进程所占用的内存资源进行内存释放,直至内存占用压力值位于待优化压力值范围之外。
需要说明的是,本申请提供的应用内存优化装置100,其基本原理及产生的技术效果与图2所示的应用内存优化方法相同,为简要描述,本实施例部分未提及之处,可参考上述的对图2所示的应用内存优化方法的相应描述。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个可读存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个可读存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的可读存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
综上所述,在本申请提供的一种应用内存优化方法、装置、终端设备及可读存储介质中,本申请在对目标应用程序所对应的每个应用进程进行处理时,通过对该应用进程的内存资源占用量进行查询,并根据查询到的内存资源占用量数据计算该应用进程的内存占用压力值,而后判断该内存占用压力值是否位于与该应用进程对应的待优化压力值范围内,并在判定该内存占用压力值位于待优化压力值范围内时,对该应用进程所占用的内存资源进行内存释放,直至对应的内存占用压力值位于该待优化压力值范围之外,从而在合适时机对应用程序的进程进行内存资源回收,确保应用程序得以长久地持续运行,并降低终端设备出现卡顿及黑屏等现象的可能性,提高用户体验。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (14)
1.一种应用内存优化方法,其特征在于,应用于终端设备,所述方法包括:
针对在所述终端设备上运行的与目标应用程序对应的每个应用进程,查询该应用进程对应的内存资源占用量,其中所述内存资源占用量包括对应应用进程下的第一功能模块的物理内存占用量以及第二功能模块的虚拟内存占用量,其中同一应用进程下的第二功能模块多于第一功能模块,所述第一功能模块由对应应用进程按照第一模块划分方式划分得到,所述第二功能模块由对应应用进程按照第二模块划分方式划分得到;
根据查询到的内存资源占用量计算该应用进程的内存占用压力值,其中所述内存占用压力值用于表示对应应用进程的内存资源占用量给终端设备运行造成的压力状况;
判断所述内存占用压力值是否位于与该应用进程对应的待优化压力值范围内;
当判定所述内存占用压力值位于所述待优化压力值范围内时,对该应用进程所占用的内存资源进行内存释放,直至所述内存占用压力值位于所述待优化压力值范围之外;
其中,所述根据查询到的内存资源占用量计算该应用进程的内存占用压力值,包括:
在该应用进程下的所有第二功能模块的虚拟内存占用量中,提取出与预设重要模块对应的目标内存占用量;
分别计算该应用进程下的每个第一功能模块的物理内存占用量与物理内存预设量之间的差值、每个第二功能模块的虚拟内存占用量与虚拟内存预设量之间的差值,以及每个预设重要模块的目标内存占用量与目标内存预设量之间的差值,得到每个第一功能模块的第一内存量差值、每个第二功能模块的第二内存量差值以及每个预设重要模块的第三内存量差值;
根据该应用进程下的每个第一功能模块的第一预设加权值,对该应用进程下的所有第一内存量差值进行加权求和运算,得到与该应用进程对应的物理内存压力值;
根据该应用进程下的每个第二功能模块的第二预设加权值及每个预设重要模块的第三预设加权值,对该应用进程下的所有第二内存量才差值及所有第三内存量差值进行加权求和运算,得到与该应用进程对应的虚拟内存压力值;
对与该应用进程对应的物理内存压力值及虚拟内存压力值进行求和运算,得到该应用进程的内存占用压力值。
2.根据权利要求1所述的方法,其特征在于,所述待优化压力值范围包括第一压力值范围,所述对该应用进程所占用的内存资源进行内存释放,包括:
检测所述内存占用压力值是否处于所述第一压力值范围内;
当检测到所述内存占用压力值处于所述第一压力值范围内时,判断所述物理内存压力值是否不小于预设物理压力阈值,并判断所述虚拟内存压力值是否不小于预设虚拟压力阈值;
若判定所述物理内存压力值不小于所述预设物理压力阈值,则获取针对物理内存资源的与该应用进程对应的第一优化策略,并按照所述第一优化策略对该应用进程所占用的物理内存资源进行内存释放;
若判定所述虚拟内存压力值不小于所述预设虚拟压力阈值,则获取针对虚拟内存资源的与该应用进程对应的第二优化策略,并按照所述第二优化策略对该应用进程所占用的虚拟内存资源进行内存释放。
3.根据权利要求2所述的方法,其特征在于,所述按照所述第一优化策略对该应用进程所占用的物理内存资源进行内存释放,包括:
根据终端设备的物理内存剩余量,确定所述终端设备的物理内存紧缺等级,并确定该应用进程的与所述物理内存紧缺等级匹配的物理内存释放量;
将所述物理内存释放量平摊到该应用进程下的第一内存量差值为正数的第一功能模块上进行物理内存释放。
4.根据权利要求2所述的方法,其特征在于,所述按照所述第一优化策略对该应用进程所占用的物理内存资源进行内存释放,包括:
在该应用进程下的所有第一内存量差值为正数的第一功能模块中选取至少一个目标第一功能模块;
针对每个目标第一功能模块,按照该目标第一功能模块对应的第一内存量差值对该目标第一功能模块进行物理内存释放。
5.根据权利要求2所述的方法,其特征在于,所述按照所述第一优化策略对该应用进程所占用的物理内存资源进行内存释放,包括:
根据终端设备的物理内存剩余量,确定所述终端设备的物理内存紧缺等级,并确定该应用进程的与所述物理内存紧缺等级匹配的物理内存释放量;
对该应用进程下的所有第一内存量差值为正数的第一功能模块按照从弱到强的顺序进行重要度排序,得到对应的物理重要度排序结果;
依次对所述物理重要度排序结果所记录的每个第一功能模块按照其对应的第一内存量差值进行物理内存释放,直至最终释放的物理内存总量等于所述物理内存释放量。
6.根据权利要求2所述的方法,其特征在于,所述按照所述第二优化策略对该应用进程所占用的虚拟内存资源进行内存释放,包括:
根据终端设备的虚拟内存剩余量,确定所述终端设备的虚拟内存紧缺等级,并确定该应用进程的与所述虚拟内存紧缺等级匹配的虚拟内存释放量;
将所述虚拟内存释放量平摊到该应用进程下的第二内存量差值为正数的第二功能模块上进行虚拟内存释放。
7.根据权利要求2所述的方法,其特征在于,所述按照所述第二优化策略对该应用进程所占用的虚拟内存资源进行内存释放,包括:
在该应用进程下的所有第二内存量差值为正数的第二功能模块中选取至少一个目标第二功能模块;
针对每个目标第二功能模块,按照该目标第二功能模块对应的第二内存量差值对该目标第二功能模块进行虚拟内存释放。
8.根据权利要求2所述的方法,其特征在于,所述按照所述第二优化策略对该应用进程所占用的虚拟内存资源进行内存释放,包括:
根据终端设备的虚拟内存剩余量,确定所述终端设备的虚拟内存紧缺等级,并确定该应用进程的与所述虚拟内存紧缺等级匹配的虚拟内存释放量;
对该应用进程下的除预设重要模块之外的所有第二内存量差值为正数的第二功能模块按照从弱到强的顺序进行重要度排序,得到对应的虚拟重要度排序结果;
依次对所述虚拟重要度排序结果所记录的每个第二功能模块按照其对应的第二内存量差值进行虚拟内存释放,直至最终释放的虚拟内存总量等于所述虚拟内存释放量。
9.根据权利要求2-8中任意一项所述的方法,其特征在于,所述待优化压力值范围还包括第二压力值范围,所述第二压力值范围的下限压力值等于所述第一压力值范围的上限压力值,所述对该应用进程所占用的内存资源进行内存释放,还包括:
当检测到所述内存占用压力值不处于所述第一压力值范围内时,检测所述内存占用压力值是否处于所述第二压力值范围内;
若检测到所述内存占用压力值处于所述第二压力值范围内,则获取针对物理内存资源及虚拟内存资源的与该应用进程对应的第三优化策略,并按照所述第三优化策略对该应用进程所占用的物理内存资源及虚拟内存资源进行内存释放。
10.根据权利要求9所述的方法,其特征在于,所述按照所述第三优化策略对该应用进程所占用的物理内存资源及虚拟内存资源进行内存释放,包括:
确定该应用进程下的与所述目标应用程序的进程缓存对应的第一功能模块及第二功能模块;
对确定出的第一功能模块所占用的所有物理内存资源进行内存释放,并对确定出的第二功能模块所占用的所有虚拟内存资源进行内存释放。
11.根据权利要求9所述的方法,其特征在于,所述按照所述第三优化策略对该应用进程所占用的物理内存资源及虚拟内存资源进行内存释放,包括:
确定该应用进程下的与该目标应用程序当前的运行界面无关联关系的所有第一功能模块及所有第二功能模块;
对确定出的第一功能模块所占用的所有物理内存资源进行内存释放,并对确定出的第二功能模块所占用的所有虚拟内存资源进行内存释放。
12.一种应用内存优化装置,其特征在于,应用于终端设备,所述装置包括:
内存占用查询模块,用于针对在所述终端设备运行的与目标应用程序对应的每个应用进程,查询该应用进程对应的内存资源占用量,其中所述内存资源占用量包括对应应用进程下的第一功能模块的物理内存占用量以及第二功能模块的虚拟内存占用量,其中同一应用进程下的第二功能模块多于第一功能模块,所述第一功能模块由对应应用进程按照第一模块划分方式划分得到,所述第二功能模块由对应应用进程按照第二模块划分方式划分得到;
内存压力计算模块,用于根据查询到的内存资源占用量计算该应用进程的内存占用压力值,其中所述内存占用压力值用于表示对应应用进程的内存资源占用量给终端设备运行造成的压力状况;
内存优化判断模块,用于判断所述内存占用压力值是否位于与该应用进程对应的待优化压力值范围内;
内存资源优化模块,用于当判定所述内存占用压力值位于所述待优化压力值范围内时,对该应用进程所占用的内存资源进行内存释放,直至所述内存占用压力值位于所述待优化压力值范围之外;
其中,所述内存压力计算模块根据查询到的内存资源占用量计算该应用进程的内存占用压力值的方式,包括:
在该应用进程下的所有第二功能模块的虚拟内存占用量中,提取出与预设重要模块对应的目标内存占用量;
分别计算该应用进程下的每个第一功能模块的物理内存占用量与物理内存预设量之间的差值、每个第二功能模块的虚拟内存占用量与虚拟内存预设量之间的差值,以及每个预设重要模块的目标内存占用量与目标内存预设量之间的差值,得到每个第一功能模块的第一内存量差值、每个第二功能模块的第二内存量差值以及每个预设重要模块的第三内存量差值;
根据该应用进程下的每个第一功能模块的第一预设加权值,对该应用进程下的所有第一内存量差值进行加权求和运算,得到与该应用进程对应的物理内存压力值;
根据该应用进程下的每个第二功能模块的第二预设加权值及每个预设重要模块的第三预设加权值,对该应用进程下的所有第二内存量才差值及所有第三内存量差值进行加权求和运算,得到与该应用进程对应的虚拟内存压力值;
对与该应用进程对应的物理内存压力值及虚拟内存压力值进行求和运算,得到该应用进程的内存占用压力值。
13.一种终端设备,其特征在于,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的机器可执行指令,所述处理器可执行所述机器可执行指令,以实现权利要求1-11中任意一项所述的应用内存优化方法。
14.一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现权利要求1-11中任意一项所述的应用内存优化方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010100112.XA CN111338796B (zh) | 2020-02-18 | 2020-02-18 | 应用内存优化方法、装置、终端设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010100112.XA CN111338796B (zh) | 2020-02-18 | 2020-02-18 | 应用内存优化方法、装置、终端设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111338796A CN111338796A (zh) | 2020-06-26 |
CN111338796B true CN111338796B (zh) | 2023-07-18 |
Family
ID=71183868
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010100112.XA Active CN111338796B (zh) | 2020-02-18 | 2020-02-18 | 应用内存优化方法、装置、终端设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111338796B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111930513B (zh) * | 2020-08-31 | 2023-02-28 | Oppo(重庆)智能科技有限公司 | 文件预读的调整方法、装置、电子设备及存储介质 |
CN113434288B (zh) * | 2021-06-16 | 2022-12-09 | 荣耀终端有限公司 | 内存管理的方法及电子设备 |
CN115543864A (zh) * | 2022-09-30 | 2022-12-30 | 荣耀终端有限公司 | 一种内存垃圾的回收方法及电子设备 |
CN116166573B (zh) * | 2023-04-26 | 2023-09-08 | 荣耀终端有限公司 | 控制内存回收的方法、电子设备及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102103515B (zh) * | 2009-12-22 | 2014-07-02 | 联想(北京)有限公司 | 一种内存管理方法、虚拟机监视器及计算机 |
CN102306126B (zh) * | 2011-08-24 | 2014-06-04 | 华为技术有限公司 | 内存管理方法、装置和系统 |
CN108205474B (zh) * | 2017-08-23 | 2022-03-04 | 珠海市魅族科技有限公司 | 内存管理方法、终端设备、计算机装置以及可读存储介质 |
CN110018904A (zh) * | 2018-01-10 | 2019-07-16 | 广东欧珀移动通信有限公司 | 信息处理方法、装置、计算机设备和计算机可读存储介质 |
-
2020
- 2020-02-18 CN CN202010100112.XA patent/CN111338796B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111338796A (zh) | 2020-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111338796B (zh) | 应用内存优化方法、装置、终端设备及可读存储介质 | |
US20070005926A1 (en) | Method for managing a memory in mobile terminal | |
US8117505B2 (en) | Resource exhaustion prediction, detection, diagnosis and correction | |
CN110764906B (zh) | 内存回收处理方法、装置、电子设备以及存储介质 | |
CN110008016B (zh) | 匿名页面管理方法、装置、终端设备及可读存储介质 | |
CN103902437A (zh) | 一种检测方法及服务器 | |
US10324784B2 (en) | Mitigating crashes of an application server executing a monitoring agent | |
CN108205474B (zh) | 内存管理方法、终端设备、计算机装置以及可读存储介质 | |
CN108874324B (zh) | 一种访问请求处理方法、装置、设备及可读存储介质 | |
CN108052388A (zh) | 一种Android中内存回收方法及装置 | |
CN108304274A (zh) | 一种信息交互的方法、服务器及计算机可读介质 | |
CN106528000A (zh) | 一种数据存储装置及其读写性能优化方法、系统 | |
CN110502345A (zh) | 一种过载保护方法、装置、计算机设备及存储介质 | |
CN111091385A (zh) | 基于权重的对象识别方法、装置以及电子设备 | |
US20190065368A1 (en) | Memory reclaiming method and apparatus | |
CN111949488A (zh) | 一种硬盘故障预测方法、系统及电子设备和存储介质 | |
CN108255703B (zh) | 一种sql脚本的故障修复方法及其终端 | |
CN116795718A (zh) | 基于eBPF的Linux系统内存泄漏检测方法及系统 | |
CN114090465A (zh) | 内存回收方法及设备 | |
CN111143317A (zh) | 一种日志存储方法、装置、设备及可读存储介质 | |
CN114218126A (zh) | 内存回收方法和装置 | |
CN109308245A (zh) | 一种服务器资源预警方法、装置、设备及可读存储介质 | |
CN111783835A (zh) | 一种数据降维方法、装置及系统 | |
CN112035253B (zh) | 一种linux系统页缓存回收方法及相关装置 | |
CN115543859A (zh) | 多分区ssd的磨损均衡优化方法、装置、设备及介质 |
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 |