CN112667408A - 一种内存分配方法及终端设备 - Google Patents

一种内存分配方法及终端设备 Download PDF

Info

Publication number
CN112667408A
CN112667408A CN202110071111.1A CN202110071111A CN112667408A CN 112667408 A CN112667408 A CN 112667408A CN 202110071111 A CN202110071111 A CN 202110071111A CN 112667408 A CN112667408 A CN 112667408A
Authority
CN
China
Prior art keywords
memory
application program
target application
cache
started
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
Application number
CN202110071111.1A
Other languages
English (en)
Inventor
张金山
韩冰天
王振淦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing ByteDance Network Technology Co Ltd
Original Assignee
Beijing ByteDance Network Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing ByteDance Network Technology Co Ltd filed Critical Beijing ByteDance Network Technology Co Ltd
Priority to CN202110071111.1A priority Critical patent/CN112667408A/zh
Publication of CN112667408A publication Critical patent/CN112667408A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明实施例提供了一种内存分配方法及终端设备,内存管理技术领域。该方法包括:接收启动指令,所述启动指令用于启动目标应用程序;根据所述目标应用程序的内存信息和启动所述目标应用程序时所需要启动的进程,获取所述目标应用程序的内存需求量,所述目标应用程序的内存信息包括所述目标应用程序的各个进程所需要的内存;根据所述内存需求量向所述目标应用程序分配内存。本发明实施例用于在不影响应用程序启动速度的同时,避免浪费内存资源。

Description

一种内存分配方法及终端设备
技术领域
本发明涉及内存管理技术领域,尤其涉及一种内存分配方法及终端设备。
背景技术
随着终端设备的硬件技术和软件技术的发展,智能手机、智能手表、掌上电脑等终端设备已广泛应用于人们的生活中,终端设备中安装的应用程序(Application,APP)也越来越丰富。
在终端设备的使用过程中,用于普遍对应用的启动速度比较敏感,如果应用启动速度过慢,则必然会影响用户的直观感受。影响应用程序启动速度的一个重要因素为终端设备为启动应用程序分配的内存大小,若内存分配不足,则会导致应用程序启动非常慢,甚至出现闪退。现有技术中在应用程序启动过程中的内存分配方式为:向应用程序分配预设大小的内存,当检测到应用程序因分配的内存耗尽而停止启动时,终端设备再次向应用程序分配内存,直到应用程序启动完成。不同应用程序启动所需要的内存大小并不相同,对于启动时所需内存较多的应用程序,若每次分配的内存较少,则终端设备需要分阶段进行多次内存分配,进而导致内存分配时间变长,应用程序启动速度变慢,而对启动时所需内存较少的应用程序,若每次分配的内存较多,则会造成内存资源的浪费。
发明内容
有鉴于此,本发明提供了一种内存分配方法及终端设备,用于在不影响应用程序启动速度的同时,避免浪费内存资源。
为了实现上述目的,本发明实施例提供技术方案如下:
第一方面,本发明的实施例提供了一种内存分配方法,包括:
接收启动指令,所述启动指令用于启动目标应用程序;
根据所述目标应用程序的内存信息和启动所述目标应用程序时所需要启动的进程,获取所述目标应用程序的内存需求量,所述目标应用程序的内存信息包括所述目标应用程序的各个进程所需要的内存;
根据所述内存需求量向所述目标应用程序分配内存。
作为本发明实施例一种可选的实施方式,在根据所述内存需求量向所述目标应用程序分配内存之前,所述方法还包括:
判断所述内存需求量是否大于可用内存的大小;
若是,则按照预设规则依次对各缓存进程进行销毁,直至所述内存需求量小于或等于所述可用内存的大小。
作为本发明实施例一种可选的实施方式,所述按照预设规则依次对各缓存进程进行销毁,直至所述内存需求量小于或等于所述可用内存的大小,包括:
获取预设时间段内各个缓存进程的使用频率;
按照使用频率由低到高的顺序依次销毁各个缓存进程,直至所述内存需求量小于或等于所述可用内存的大小。
作为本发明实施例一种可选的实施方式,所述按照预设规则依次对各缓存进程进行销毁,直至所述内存需求量小于或等于所述可用内存的大小,包括:
获取各个缓存进程对应的间隔时长;各缓存进程对应的间隔时长为最近一次使用各缓存进程的时刻与当前时刻的间隔时长;
按照间隔时长由长到短的顺序依次销毁各个缓存进程,直至所述内存需求量小于或等于所述可用内存的大小。
作为本发明实施例一种可选的实施方式,所述按照预设规则依次对各缓存进程进行销毁,直至所述内存需求量小于或等于所述可用内存的大小,包括:
获取预设时间段内各个缓存进程的使用频率以及各个缓存进程对应的间隔时长;各缓存进程对应的间隔时长为最近一次使用各缓存进程的时刻与当前时刻的间隔时长;
按照间隔时长由长到短的顺序依次销毁各个缓存进程,若至少两个缓存进程的使用频率相同,则按照间隔时长由长到短的顺序依次销毁所述至少两个缓存进程,直至所述内存需求量小于或等于所述可用内存的大小。
作为本发明实施例一种可选的实施方式,所述按照预设规则依次对各缓存进程进行销毁,直至所述内存需求量小于或等于所述可用内存的大小,包括:
获取预设时间段内各个缓存进程的使用频率以及各个缓存进程对应的间隔时长;各缓存进程对应的间隔时长为最近一次使用各缓存进程的时刻与当前时刻的间隔时长;
按照间隔时长由长到短的顺序依次销毁各个缓存进程,若至少两个缓存进程对应的按照间隔相同,则按照使用频率由低到高的顺序依次销毁所述至少两个缓存进程,直至所述内存需求量小于或等于所述可用内存的大小。
作为本发明实施例一种可选的实施方式,所述方法还包括:
在已销毁全部的缓存进程且所述内存需求量仍大于所述可用内存的大小的情况下,通过内存回收系统和/或进程管理系统进行内存的回收。
作为本发明实施例一种可选的实施方式,在根据所述目标应用程序的内存信息和启动所述目标应用程序时所需要启动的进程,获取所述目标应用程序的内存需求量之前,所述方法还包括:
向服务器发送第一请求信息,所述第一请求信息用于请求下载所述目标应用程序的应用程序安装包;
接收所述服务器发送的所述目标应用程序的应用程序安装包和所述目标应用程序的内存信息。
作为本发明实施例一种可选的实施方式,在根据所述目标应用程序的内存信息和启动所述目标应用程序时所需要启动的进程,获取所述目标应用程序的内存需求量之前,所述方法还包括:
向服务器发送第二请求信息,所述第二请求信息用于请求获取所述目标应用程序的内存信息;
接收所述服务器发送的所述目标应用程序的内存信息。
作为本发明实施例一种可选的实施方式,在根据所述目标应用程序的内存信息和启动所述目标应用程序时所需要启动的进程,获取所述目标应用程序的内存需求量之前,所述方法还包括:
在运行所述目标应用程序时,记录所述目标应用程序的各个进程的内存使用量;
根据记录的所述目标应用程序的各个进程的内存使用量,生成所述目标应用程序的内存信息。
第二方面,本发明实施例提供一种终端设备,包括:
接收单元,用于接收启动指令,所述启动指令用于启动目标应用程序;
处理单元,用于根据所述目标应用程序的内存信息和启动所述目标应用程序时所需要启动的进程,获取所述目标应用程序的内存需求量,所述目标应用程序的内存信息包括所述目标应用程序的各个进程所需要的内存;
分配单元,用于根据所述内存需求量向所述目标应用程序分配内存。
作为本发明实施例一种可选的实施方式,所述分配单元,还用于在根据所述内存需求量向所述目标应用程序分配内存之前,判断所述内存需求量是否大于可用内存的大小;若是,则按照预设规则依次对各缓存进程进行销毁,直至所述内存需求量小于或等于所述可用内存的大小。
作为本发明实施例一种可选的实施方式,所述分配单元,具体用于获取预设时间段内各个缓存进程的使用频率;按照使用频率由低到高的顺序依次销毁各个缓存进程,直至所述内存需求量小于或等于所述可用内存的大小。
作为本发明实施例一种可选的实施方式,所述分配单元,具体用于获取各个缓存进程对应的间隔时长;按照间隔时长由长到短的顺序依次销毁各个缓存进程,直至所述内存需求量小于或等于所述可用内存的大小;
其中,各缓存进程对应的间隔时长为最近一次使用各缓存进程的时刻与当前时刻的间隔时长。
作为本发明实施例一种可选的实施方式,所述分配单元,具体用于获取预设时间段内各个缓存进程的使用频率以及各个缓存进程对应的间隔时长;按照间隔时长由长到短的顺序依次销毁各个缓存进程,若至少两个缓存进程的使用频率相同,则按照间隔时长由长到短的顺序依次销毁所述至少两个缓存进程,直至所述内存需求量小于或等于所述可用内存的大小;
其中,各缓存进程对应的间隔时长为最近一次使用各缓存进程的时刻与当前时刻的间隔时长。
作为本发明实施例一种可选的实施方式,所述分配单元,具体用于获取预设时间段内各个缓存进程的使用频率以及各个缓存进程对应的间隔时长;按照间隔时长由长到短的顺序依次销毁各个缓存进程,若至少两个缓存进程对应的按照间隔相同,则按照使用频率由低到高的顺序依次销毁所述至少两个缓存进程,直至所述内存需求量小于或等于所述可用内存的大小;
其中,各缓存进程对应的间隔时长为最近一次使用各缓存进程的时刻与当前时刻的间隔时长。
作为本发明实施例一种可选的实施方式,所述分配单元,还用于在已销毁全部的缓存进程且所述内存需求量仍大于所述可用内存的大小的情况下,通过内存回收系统和/或进程管理系统进行内存的回收。
作为本发明实施例一种可选的实施方式,所述处理单元,还用于在根据所述目标应用程序的内存信息和启动所述目标应用程序时所需要启动的进程,获取所述目标应用程序的内存需求量之前,向服务器发送第一请求信息,接收所述服务器发送的所述目标应用程序的应用程序安装包和所述目标应用程序的内存信息;
其中,所述第一请求信息用于请求下载所述目标应用程序的应用程序安装包。
作为本发明实施例一种可选的实施方式,所述处理单元,还用于在根据所述目标应用程序的内存信息和启动所述目标应用程序时所需要启动的进程,获取所述目标应用程序的内存需求量之前,向服务器发送第二请求信息,接收所述服务器发送的所述目标应用程序的内存信息;
其中,所述第二请求信息用于请求获取所述目标应用程序的内存信息。
作为本发明实施例一种可选的实施方式,所述处理单元,还用于在根据所述目标应用程序的内存信息和启动所述目标应用程序时所需要启动的进程,获取所述目标应用程序的内存需求量之前,在运行所述目标应用程序时,记录所述目标应用程序的各个进程的内存使用量;根据记录的所述目标应用程序的各个进程的内存使用量,生成所述目标应用程序的内存信息。
第三方面,本发明实施例提供一种电子设备,包括:存储器和处理器,存储器用于存储计算机程序;处理器用于在调用计算机程序时执行第一方面或第一方面任一种可选的实施方式所述的内存分配方法。
第四方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现第一方面或第一方面任一种可选的实施方式所述的内存分配方法。
第五方面,本发明实施例提供一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现第一方面或第一方面任一种可选的实施方式所述的内存分配方法。
本发明实施例提供的内存分配方法在接收到用于启动目标应用程序的启动指令,首先根据目标应用程序的内存信息和启动所述目标应用程序时所需要启动的进程获取所述目标应用程序的内存需求量,然后根据所述内存需求量向所述目标应用程序分配内存。由于本发明实施例可以在启动目标应用程序时,先根据要启动的进程和各进程所要的内存精确的获取目标应用程序的内存需求量,然后再根据目标应用程序的内存需求量向目标应用程序分配内存,因此本发明实施例可以避免向目标应用程序分配的内存过多或过少,进而在不影响目标应用程序启动速度的同时,避免浪费内存资源。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的内存分配方法的步骤流程图之一;
图2为本发明实施例提供的内存分配方法的步骤流程图之二;
图3为本发明实施例提供的终端设备的结构示意图;
图4为本发明实施例提供的电子设备的硬件结构示意图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面将对本发明的方案进行进一步描述。需要说明的是,在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但本发明还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本发明的一部分实施例,而不是全部的实施例。
在本发明实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本发明实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。此外,在本发明实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。
本申请实施例提供的内存分配方法的执行主体可以为手机、平板电脑、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personal digital assistant,PDA)、智能手表、智能手环等终端设备,或者该终端设备还可以为其他类型的终端设备,本申请实施例不作限定。
本发明实施例提供了一种内存分配方法,参照图1所示,该内存分配方法包括如下步骤:
S101、接收启动指令。
其中,所述启动指令用于启动目标应用程序。
具体的,接收启动指令的方式可以为:对用户操作进行检测,当检测到用户对目标应用程序的图标输入预设操作时,确定接收到所述启动指令。其中,所述预设操作可以为对目标应用程序的图标的触摸操作、双击操作等,本发明实施例对此不做限定。
S102、根据所述目标应用程序的内存信息和启动所述目标应用程序时所需要启动的进程,获取所述目标应用程序的内存需求量。
其中,所述目标应用程序的内存信息包括所述目标应用程序的各个进程所需要的内存。
示例性的,目标应用程序的内存信息可以如下表1所示:
表1
Figure BDA0002905981360000091
通过目标应用程序的内存信息可以获取目标应用程序任意进程需要的内存。
示例性的,目标应用程序启动时需要启动进程1、进程2以及进程4,进程1需要的内存大小为a,进程2需要的内存大小为b,进程4需要的内存大小为d,则可以获取目标应用程序的内存需求量为a+b+d。
S103、根据所述内存需求量向所述目标应用程序分配内存。
具体的,在安卓(Android)操作系统的终端设备中,终端设备的总内存(TotalRAM)主要包括空闲内存(Free RAM)、用户使用态内存(Used RAM)以及内核态使用内存(Lost RAM)。其中,空闲内存(Free RAM)主要包括缓存进程占用的内存(cached pss)、为缓存内核分配的内存(cached kernel)以及可用内存(Free)等几部分,而其中只有可用内存是为分配的内存,可以直接被分配至应用程序使用,因此根据所述内存需求量向所述目标应用程序分配内存,具体为:从可用内存中向目标应用程序分配大小为内存需求量的内存。
本发明实施例提供的内存分配方法在接收到用于启动目标应用程序的启动指令,首先根据目标应用程序的内存信息和启动所述目标应用程序时所需要启动的进程获取所述目标应用程序的内存需求量,然后根据所述内存需求量向所述目标应用程序分配内存。由于本发明实施例可以在启动目标应用程序时,先根据要启动的进程和各进程所要的内存精确的获取目标应用程序的内存需求量,然后再根据目标应用程序的内存需求量向目标应用程序分配内存,因此本发明实施例可以避免向目标应用程序分配的内存过多或过少,进而在不影响目标应用程序启动速度的同时,避免浪费内存资源。
作为本发明实施例一种可选的实施方式,在上述步骤S101至S103的基础上,参照图2所示,在上述步骤S103(根据所述内存需求量向所述目标应用程序分配内存之前)本发明实施例提供的内存分配方法还包括:
S201、判断所述内存需求量是否大于可用内存的大小。
即,终端设备查看可用内存(Free)是否能够满足目标应用程序启动时需求的内存量。
在上述步骤S201中,若所述内存需求量小于或等于可用内存的大小,则直接执行步骤S103,而若所述内存需求量大于可用内存的大小,则执行如下步骤S202之后,再执行步骤S103。
S202、按照预设规则依次对各缓存进程进行销毁,直至所述内存需求量小于或等于所述可用内存的大小。
具体的,当可用内存不足时,系统需要进行内存回收,以增加可用内存。进行内存回收的主要方式为强制销毁进程和回收部分为缓存内核分配的内存(cached kernel)。若回收为缓存内核分配的内存,则在缓存内核需要使用内存时,又需要重新为缓存内核分配内存,可能会影响前台进程的性能,进而造成前台应用程序卡顿,因此本发明实施例优先通过销毁进程的方式进行内存回收。系统当中可能会运行有多个进程,多个进程主要包括:前台进程(foreground process)、可视进程(visible process)、服务进程(serviceprocess)以及缓存进程(cached process)。其中,前台进程一般比较少,且销毁前台进程会直接影响用户当前正在进行的操作。可视进程一般用于执行用户可以意识到的工作,例如:动态壁纸、输入法等,销毁可视进程会直接影响用户的使用体验。服务进程虽然对用户不直接可见,但是服务进程一般做的一些用户关注的工作,例如:数据的上传与下载,销毁此类进程也会影响用户的使用体验。缓存进程一般包括用户不可见的活动(Activity)实例,销毁此类进程不会对用户使用造成影响,因此进程按照优先级依次为:前台进程、可视进程、服务进程、缓存进程。上述实施例当可用内存不足时,按照预设规则依次对各缓存进程进行销毁,直至所述内存需求量小于或等于所述可用内存的大小,因此上述实施例可以避免内存回收影响用户的使用体验。
具体的,按照预设规则依次对各缓存进程进行销毁,直至所述内存需求量小于或等于所述可用内存的大小可以包括:
按照预设规则依次对各缓存进程进行销毁;
在每销毁一个缓存进程后,判断所述内存需求量是否大于可用内存的大小;
若所述内存需求量仍大于可用内存的大小,则进行下一个缓存进程的销毁;
若所述内存需求量小于或等于可用内存的大小,则停止对各缓存进程进行销毁。
以下对上述步骤S202(按照预设规则依次对各缓存进程进行销毁,直至所述内存需求量小于或等于所述可用内存的大小)的实现方式进行说明。上述步骤S202的实现方式可以为如下四种实现方式中的任一种:
实现方式一、
上述步骤S202(按照预设规则依次对各缓存进程进行销毁,直至所述内存需求量小于或等于所述可用内存的大小),包括如下步骤a和步骤b:
步骤a、获取预设时间段内各个缓存进程的使用频率。
示例性的,预设时间段可以为30分钟、1小时、6小时等,本发明实施例对此不做限定。
步骤b、按照使用频率由低到高的顺序依次销毁各个缓存进程,直至所述内存需求量小于或等于所述可用内存的大小。
即,根据使用频率由低到高的顺序依次销毁未销毁的缓存进程中使用频率最低的缓存进程。
由于上述优先销毁使用频率较低的缓存进程,因此上述实施例可以在内存回收过程中减少缓存进程的销毁对系统性能的影响。
实现方式二、
上述步骤S202(按照预设规则依次对各缓存进程进行销毁,直至所述内存需求量小于或等于所述可用内存的大小),包括如下步骤1和步骤2:
步骤1、获取各个缓存进程对应的间隔时长。
其中,各缓存进程对应的间隔时长为最近一次使用各缓存进程的时刻与当前时刻的间隔时长。
例如:最近一次使用某一缓存进程的时刻为t0,当前时刻为t1,则该缓存进程对应的间隔时长为t1-t0。
步骤2、按照间隔时长由长到短的顺序依次销毁各个缓存进程,直至所述内存需求量小于或等于所述可用内存的大小。
即,根据最近一次使用距离当前的时间长度由长到短的顺序依次销毁未销毁的缓存进程中最近一次使用距离当前的时间长度最长的缓存进程。
由于上述优先销毁按照间隔较长的缓存进程,因此上述实施例可以优先销毁长时间不使用的缓存进程,进而在内存回收过程中减少缓存进程的销毁对系统性能的影响。
实现方式三、
上述步骤S202(按照预设规则依次对各缓存进程进行销毁,直至所述内存需求量小于或等于所述可用内存的大小),包括如下步骤①和步骤②:
步骤①、获取预设时间段内各个缓存进程的使用频率以及各个缓存进程对应的间隔时长。
其中,各缓存进程对应的间隔时长为最近一次使用各缓存进程的时刻与当前时刻的间隔时长。
步骤②、按照间隔时长由长到短的顺序依次销毁各个缓存进程,若至少两个缓存进程的使用频率相同,则按照间隔时长由长到短的顺序依次销毁所述至少两个缓存进程,直至所述内存需求量小于或等于所述可用内存的大小。
实现方式四、
上述步骤S202(按照预设规则依次对各缓存进程进行销毁,直至所述内存需求量小于或等于所述可用内存的大小),包括如下步骤Ⅰ和步骤Ⅱ:
步骤Ⅰ、获取预设时间段内各个缓存进程的使用频率以及各个缓存进程对应的间隔时长。
其中,各缓存进程对应的间隔时长为最近一次使用各缓存进程的时刻与当前时刻的间隔时长。
步骤Ⅱ、按照间隔时长由长到短的顺序依次销毁各个缓存进程,若至少两个缓存进程对应的按照间隔相同,则按照使用频率由低到高的顺序依次销毁所述至少两个缓存进程,直至所述内存需求量小于或等于所述可用内存的大小。
进一步的,本发明实施例提供的内存分配方法还包括:
在已销毁全部的缓存进程且所述内存需求量仍大于所述可用内存的大小的情况下,通过内存回收系统和/或进程管理系统进行内存的回收。
即,若已销毁完所有缓存进程,但可用内存还是不够为目标应用程序分配内存,则内存通过系统内存回收系统和进程管理系统进行内存的回收。其中,内存回收系统进行内存的回收的方式可以为:回收为缓存内核分配的内存,进程管理系统进行内存的回收的方式可以为:销毁服务进程、可视进程、前台进程等进行内存回收。
在根据所述目标应用程序的内存信息和启动所述目标应用程序时所需要启动的进程,获取所述目标应用程序的内存需求量之前,本发明实施例提供的内存分配方法需要获取所述目标应用程序的内存信息,具体可以通过如下三种实现方式获取目标应用程序的内存信息:
方式一、
向服务器发送第一请求信息,所述第一请求信息用于请求下载所述目标应用程序的应用程序安装包;
接收所述服务器发送的所述目标应用程序的应用程序安装包和所述目标应用程序的内存信息。
具体的,服务器对目标应用程序进行测试,获取目标应用程序的各个进程所要的内存,然后生成目标应用程序的内存信息,当终端设备通过第一请求信息请求下载目标应用程序的应用程序安装包(Android application package,APK)时,将目标应用程序的内存信息一起发送至终端设备。
方式二、
向服务器发送第二请求信息,所述第二请求信息用于请求获取所述目标应用程序的内存信息;
接收所述服务器发送的所述目标应用程序的内存信息。
获取应用程序的APK的途径非常多,在一些情况下,终端设备下载、安装的并不是从官方应用商店获取的应用程序安装包,在这种情况下,终端设备在获取应用程序安装包时并没有获取到应用程序的内存信息,此时终端设备可以向服务器发送请求信息,请求信息中可以携带应用程序的标识、版本等信息,以便从服务器获取应用程序的内存信息。
方式三、
在运行所述目标应用程序时,记录所述目标应用程序的各个进程的内存使用量;
根据记录的所述目标应用程序的各个进程的内存使用量,生成所述目标应用程序的内存信息。
即,除上述方式一和方式二外,终端设备可以记录应用程序在终端设备运行时各个进程的内存使用量,从而生成所述目标应用程序的内存信息。
基于同一发明构思,作为对上述方法的实现,本发明实施例还提供了一种终端设备,该终端设备实施例均与前述方法实施例对应,为便于阅读,本装置实施例不再对前述方法实施例中的细节内容进行逐一赘述,但应当明确,本实施例中的终端设备能够对应实现前述方法实施例的全部内容。
图3为本发明实施例提供的终端设备,如图3所示,本实施例提供的终端设备300包括:
接收单元31,用于接收启动指令,所述启动指令用于启动目标应用程序;
处理单元32,用于根据所述目标应用程序的内存信息和启动所述目标应用程序时所需要启动的进程,获取所述目标应用程序的内存需求量,所述目标应用程序的内存信息包括所述目标应用程序的各个进程所需要的内存;
分配单元33,用于根据所述内存需求量向所述目标应用程序分配内存。
作为本发明实施例一种可选的实施方式,所述分配单元33,还用于在根据所述内存需求量向所述目标应用程序分配内存之前,判断所述内存需求量是否大于可用内存的大小;若是,则按照预设规则依次对各缓存进程进行销毁,直至所述内存需求量小于或等于所述可用内存的大小。
作为本发明实施例一种可选的实施方式,所述分配单元33,具体用于获取预设时间段内各个缓存进程的使用频率;按照使用频率由低到高的顺序依次销毁各个缓存进程,直至所述内存需求量小于或等于所述可用内存的大小。
作为本发明实施例一种可选的实施方式,所述分配单元33,具体用于获取各个缓存进程对应的间隔时长;按照间隔时长由长到短的顺序依次销毁各个缓存进程,直至所述内存需求量小于或等于所述可用内存的大小;
其中,各缓存进程对应的间隔时长为最近一次使用各缓存进程的时刻与当前时刻的间隔时长。
作为本发明实施例一种可选的实施方式,所述分配单元33,具体用于获取预设时间段内各个缓存进程的使用频率以及各个缓存进程对应的间隔时长;按照间隔时长由长到短的顺序依次销毁各个缓存进程,若至少两个缓存进程的使用频率相同,则按照间隔时长由长到短的顺序依次销毁所述至少两个缓存进程,直至所述内存需求量小于或等于所述可用内存的大小;
其中,各缓存进程对应的间隔时长为最近一次使用各缓存进程的时刻与当前时刻的间隔时长。
作为本发明实施例一种可选的实施方式,所述分配单元33,具体用于获取预设时间段内各个缓存进程的使用频率以及各个缓存进程对应的间隔时长;按照间隔时长由长到短的顺序依次销毁各个缓存进程,若至少两个缓存进程对应的按照间隔相同,则按照使用频率由低到高的顺序依次销毁所述至少两个缓存进程,直至所述内存需求量小于或等于所述可用内存的大小;
其中,各缓存进程对应的间隔时长为最近一次使用各缓存进程的时刻与当前时刻的间隔时长。
作为本发明实施例一种可选的实施方式,所述分配单元33,还用于在已销毁全部的缓存进程且所述内存需求量仍大于所述可用内存的大小的情况下,通过内存回收系统和/或进程管理系统进行内存的回收。
作为本发明实施例一种可选的实施方式,所述处理单元31,还用于在根据所述目标应用程序的内存信息和启动所述目标应用程序时所需要启动的进程,获取所述目标应用程序的内存需求量之前,向服务器发送第一请求信息,接收所述服务器发送的所述目标应用程序的应用程序安装包和所述目标应用程序的内存信息;
其中,所述第一请求信息用于请求下载所述目标应用程序的应用程序安装包。
作为本发明实施例一种可选的实施方式,所述处理单元31,还用于在根据所述目标应用程序的内存信息和启动所述目标应用程序时所需要启动的进程,获取所述目标应用程序的内存需求量之前,向服务器发送第二请求信息,接收所述服务器发送的所述目标应用程序的内存信息;
其中,所述第二请求信息用于请求获取所述目标应用程序的内存信息。
作为本发明实施例一种可选的实施方式,所述处理单元31,还用于在根据所述目标应用程序的内存信息和启动所述目标应用程序时所需要启动的进程,获取所述目标应用程序的内存需求量之前,在运行所述目标应用程序时,记录所述目标应用程序的各个进程的内存使用量;根据记录的所述目标应用程序的各个进程的内存使用量,生成所述目标应用程序的内存信息。
上述实施例装置实施例提供的终端设备可以执行上述方法实施例中的各个步骤,其实现原理与技术效果类似,此处不再赘述。
基于同一发明构思,本发明实施例还提供了一种电子设备。图4为本发明实施例提供的电子设备的结构示意图,如图4所示,本实施例提供的电子设备包括:存储器41和处理器42,存储器41用于存储计算机程序;处理器42用于在调用计算机程序时执行上述实施例提供的内存分配方法的步骤。
本发明实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述实施例提供的内存分配方法的步骤。
本领域技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。
处理器可以是中央处理单元(CentralProcessingUnit,CPU),还可以是其他通用处理器、数字信号处理器(DigitalSignalProcessor,DSP)、专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC)、现成可编程门阵列(Field-ProgrammableGateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动存储介质。存储介质可以由任何方法或技术来实现信息存储,信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。根据本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (10)

1.一种内存分配方法,其特征在于,包括:
接收启动指令,所述启动指令用于启动目标应用程序;
根据所述目标应用程序的内存信息和启动所述目标应用程序时所需要启动的进程,获取所述目标应用程序的内存需求量,所述目标应用程序的内存信息包括所述目标应用程序的各个进程所需要的内存;
根据所述内存需求量向所述目标应用程序分配内存。
2.根据权利要求1所述的方法,其特征在于,在根据所述内存需求量向所述目标应用程序分配内存之前,所述方法还包括:
判断所述内存需求量是否大于可用内存的大小;
若是,则按照预设规则依次对各缓存进程进行销毁,直至所述内存需求量小于或等于所述可用内存的大小。
3.根据权利要求2所述的方法,其特征在于,所述按照预设规则依次对各缓存进程进行销毁,直至所述内存需求量小于或等于所述可用内存的大小,包括:
获取预设时间段内各个缓存进程的使用频率;
按照使用频率由低到高的顺序依次销毁各个缓存进程,直至所述内存需求量小于或等于所述可用内存的大小。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在已销毁全部的缓存进程且所述内存需求量仍大于所述可用内存的大小的情况下,通过内存回收系统和/或进程管理系统进行内存的回收。
5.根据权利要求1-4任一项所述的方法,其特征在于,在根据所述目标应用程序的内存信息和启动所述目标应用程序时所需要启动的进程,获取所述目标应用程序的内存需求量之前,所述方法还包括:
向服务器发送第一请求信息,所述第一请求信息用于请求下载所述目标应用程序的应用程序安装包;
接收所述服务器发送的所述目标应用程序的应用程序安装包和所述目标应用程序的内存信息。
6.根据权利要求1-4任一项所述的方法,其特征在于,在根据所述目标应用程序的内存信息和启动所述目标应用程序时所需要启动的进程,获取所述目标应用程序的内存需求量之前,所述方法还包括:
向服务器发送第二请求信息,所述第二请求信息用于请求获取所述目标应用程序的内存信息;
接收所述服务器发送的所述目标应用程序的内存信息。
7.根据权利要求1-4任一项所述的方法,其特征在于,在根据所述目标应用程序的内存信息和启动所述目标应用程序时所需要启动的进程,获取所述目标应用程序的内存需求量之前,所述方法还包括:
在运行所述目标应用程序时,记录所述目标应用程序的各个进程的内存使用量;
根据记录的所述目标应用程序的各个进程的内存使用量,生成所述目标应用程序的内存信息。
8.一种终端设备,其特征在于,包括:
接收单元,用于接收启动指令,所述启动指令用于启动目标应用程序;
处理单元,用于根据所述目标应用程序的内存信息和启动所述目标应用程序时所需要启动的进程,获取所述目标应用程序的内存需求量,所述目标应用程序的内存信息包括所述目标应用程序的各个进程所需要的内存;
分配单元,用于根据所述内存需求量向所述目标应用程序分配内存。
9.一种电子设备,其特征在于,包括:存储器和处理器,存储器用于存储计算机程序;处理器用于在调用计算机程序时执行权利要求1-7任一项所述的内存分配方法。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,计算机程序被处理器执行时实现权利要求1-7任一项所述的内存分配方法。
CN202110071111.1A 2021-01-19 2021-01-19 一种内存分配方法及终端设备 Pending CN112667408A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110071111.1A CN112667408A (zh) 2021-01-19 2021-01-19 一种内存分配方法及终端设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110071111.1A CN112667408A (zh) 2021-01-19 2021-01-19 一种内存分配方法及终端设备

Publications (1)

Publication Number Publication Date
CN112667408A true CN112667408A (zh) 2021-04-16

Family

ID=75415715

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110071111.1A Pending CN112667408A (zh) 2021-01-19 2021-01-19 一种内存分配方法及终端设备

Country Status (1)

Country Link
CN (1) CN112667408A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113986559A (zh) * 2021-12-24 2022-01-28 荣耀终端有限公司 内存管理方法和相关装置
CN114338804A (zh) * 2021-12-23 2022-04-12 奇安信科技集团股份有限公司 云手机的策略控制方法及装置、存储介质、终端

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170004013A1 (en) * 2014-02-14 2017-01-05 Shell Internet (Beijing) Security Technology Co., Ltd. Method and device for managing application
CN106528216A (zh) * 2016-10-26 2017-03-22 深圳市金立通信设备有限公司 一种启动应用程序的方法及终端
CN107133097A (zh) * 2017-04-16 2017-09-05 努比亚技术有限公司 内存优化方法及装置
CN109614168A (zh) * 2018-12-11 2019-04-12 深圳美图创新科技有限公司 内存优化方法及装置
CN111078406A (zh) * 2019-12-10 2020-04-28 Oppo(重庆)智能科技有限公司 内存管理方法、装置、存储介质及电子设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170004013A1 (en) * 2014-02-14 2017-01-05 Shell Internet (Beijing) Security Technology Co., Ltd. Method and device for managing application
CN106528216A (zh) * 2016-10-26 2017-03-22 深圳市金立通信设备有限公司 一种启动应用程序的方法及终端
CN107133097A (zh) * 2017-04-16 2017-09-05 努比亚技术有限公司 内存优化方法及装置
CN109614168A (zh) * 2018-12-11 2019-04-12 深圳美图创新科技有限公司 内存优化方法及装置
CN111078406A (zh) * 2019-12-10 2020-04-28 Oppo(重庆)智能科技有限公司 内存管理方法、装置、存储介质及电子设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114338804A (zh) * 2021-12-23 2022-04-12 奇安信科技集团股份有限公司 云手机的策略控制方法及装置、存储介质、终端
CN113986559A (zh) * 2021-12-24 2022-01-28 荣耀终端有限公司 内存管理方法和相关装置

Similar Documents

Publication Publication Date Title
US10114740B2 (en) Memory management techniques
CN108763099B (zh) 系统的启动方法、装置、电子设备和存储介质
US20070226417A1 (en) Power efficient media playback on general purpose portable devices
US10878880B2 (en) Selective volatile memory refresh via memory-side data valid indication
KR20160132432A (ko) 멀티 프로세스 애플리케이션들을 위한 동적 자원 관리
JP2017511940A (ja) デバイス固有又はユーザー固有のリソース使用プロファイルに基づくリソース管理
CN108628688B (zh) 一种消息处理方法、装置及设备
US11360884B2 (en) Reserved memory in memory management system
CN112667408A (zh) 一种内存分配方法及终端设备
US20220035655A1 (en) Method and Device for Anonymous Page Management, Terminal Device, and Readable Storage Medium
EP3518111A1 (en) Information acquisition method and apparatus, and memory release method and apparatus
US20190370009A1 (en) Intelligent swap for fatigable storage mediums
US10586038B2 (en) Secure stack overflow protection via a hardware write-once register
US10740227B2 (en) Reclaiming storage resources
CN114765051A (zh) 内存测试方法及装置、可读存储介质、电子设备
CN112231238A (zh) 使用存储器压缩来减少存储器提交开销
CN110928574A (zh) 微控制器、中断处理芯片、设备及中断处理方法
US8555005B2 (en) Memory managing apparatus and method using a pointer indicator bit to perform garbage collection
US9405470B2 (en) Data processing system and data processing method
CN111124627A (zh) 应用程序的调起者确定方法、装置、终端及存储介质
CN116974732A (zh) 一种内存处理方法、装置、终端设备及介质
CN113268437A (zh) 一种主动触发内存整理的方法与设备
CN113138940A (zh) 内存回收方法、装置、电子设备以及存储介质
CN112817769B (zh) 游戏资源动态缓存方法、装置、存储介质与电子设备
CN116795409A (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