CN105740078B - 一种内存管理方法、装置及终端 - Google Patents

一种内存管理方法、装置及终端 Download PDF

Info

Publication number
CN105740078B
CN105740078B CN201610066545.1A CN201610066545A CN105740078B CN 105740078 B CN105740078 B CN 105740078B CN 201610066545 A CN201610066545 A CN 201610066545A CN 105740078 B CN105740078 B CN 105740078B
Authority
CN
China
Prior art keywords
task
memory
user
user task
initial
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
Application number
CN201610066545.1A
Other languages
English (en)
Other versions
CN105740078A (zh
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201610066545.1A priority Critical patent/CN105740078B/zh
Publication of CN105740078A publication Critical patent/CN105740078A/zh
Application granted granted Critical
Publication of CN105740078B publication Critical patent/CN105740078B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5016Allocation 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Telephone Function (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

本申请涉及数据管理技术领域,公开了一种内存管理方法、装置及终端,用以解决***运行卡顿影响用户体验的问题。该方法为:终端对用户任务划分不同的类别,按照任务类别分级分配初始内存量和内存增量,将有限的内存资源向用户比较关注或者用户对服务质量要求较高的任务倾斜,保证在任务运行过程中不会因垃圾回收带来的***卡顿影响用户体验。

Description

一种内存管理方法、装置及终端
技术领域
本申请涉及数据管理技术领域,特别涉及一种内存管理方法、装置及终端。
背景技术
在计算机科学中,自动内存管理在不改变内存分配的基础上,通过将程序运行中不会被访问的对象进行自动识别与释放的垃圾回收技术,达成了自动内存释放的功能。从自动内存释放的角度看,垃圾回收是将内存中不需要的垃圾对象找出来并释放的自动实现过程,这样,垃圾对象占用的内存空间就可以分配给新的对象使用。实际应用中,程序运行过程中使用的内存达到分配的初始内存量时,会触发垃圾回收。
自动内存管理技术提升了代码的抽象性、接口性以及可靠性,极大减轻程序员的负担,提高了生产效率。但同时,自动内存管理技术也带来了一些问题。例如,利用自动内存管理技术,在程序运行过程中需要等待使用的内存量达到为程序分配的初始内存量时,才会触发垃圾回收,在垃圾回收过程中,需要对程序中使用对象进行可达性分析,而在可达性分析中,在特定阶段需要将整个程序的运行停止下来,如果停止时间过长,就会导致***的卡顿。
随着移动终端的兴起和服务端时长的饱和,极致的用户体验变成了首要目标,显然,自动内存管理技术中由于程序暂停运行导致的***卡顿可能会极大影响用户的体验。
发明内容
本申请实施例提供一种内存管理方法、装置及终端,用以解决通过垃圾回收技术实现自动内存释放的过程中所带来的***卡顿可能会影响用户体验的问题。
本申请实施例提供的具体技术方案如下:
第一方面,提供一种内存管理方法,包括:
终端根据用户任务所属的任务类别,分级分配初始内存量和内存增量。例如,若用户任务为用户比较关注或者用户对服务质量要求比较高的任务,则终端为其分配更多的初始内存量和内存增量,即终端将有限的内存量向优先级较高的用户任务倾斜,保证了用户比较关注或者用户对服务质量要求比较高的任务在运行过程中的顺畅,减少了垃圾回收的几率,也就降低了因垃圾回收造成***卡顿给用户体验带来影响的风险。
结合第一方面,在第一方面的第一种可能实现的方式中,终端对用户任务进行识别;若识别出所述用户任务为第一类任务,则为所述用户任务分配第一初始内存量,并在所述用户任务的使用内存量达到所述第一初始内存量时,为所述用户任务分配第一内存增量;若识别出所述用户任务为第二类任务,则为所述用户任务分配第二初始内存量,并在所述用户任务的使用内存量达到所述第二初始内存量时,为所述用户任务分配第二内存增量;其中,所述第一类任务为正在运行且用户正在操作的任务,所述第二类任务为正在运行且用户未操作的任务;所述第一初始内存量高于所述第二初始内存量;所述第一内存增量高于所述第二内存增量。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,若识别出所述用户任务为第一类任务,则:所述终端若在所述用户任务的使用内存达到所述第一初始内存量之前,确定所述用户对所述用户任务的操作频度高于预设的操作频度阈值,则在所述用户任务的使用内存达到所述第一初始内存量时,仅针对所述用户任务记录垃圾回收需求,并不对所述用户任务的使用内存进行垃圾回收。
结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述终端针对所述用户任务记录垃圾回收需求之后,还包括:
所述终端在确定所述用户对所述用户任务的操作频度不高于所述预设的操作频度阈值时,或者,在确定所述用户任务由所述第一类任务更换为所述第二类任务时,依据记录的所述垃圾回收需求,触发对所述用户任务的使用内存进行垃圾回收。这样,即避免了当用户对用户任务操作频繁时因垃圾回收带来的卡顿问题,又避免了因不对用户任务进行垃圾回收造成的内存膨胀的问题。
结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,若在垃圾回收过程中,终端再次确定所述用户对所述用户任务的操作频度高于所述预设的操作频度阈值,则结束对所述用户任务进行垃圾回收。进一步保障了在用户对用户任务频繁操作时因回收垃圾带来的***卡顿问题。
结合第一方面和第一方面的第一种至第四种可能的实现方式中的任一种,在第一方面的第五种可能的实现方式中,所述终端为所述用户任务分配所述第一初始内存量,包括:
所述终端确定所述第一类任务的内存需求量,根据确定出的内存需求量为所述用户任务分配第一初始内存量。这样,可以实现按需分配,在一定程度上降低了用户任务在运行过程中内存不足的可能性。
结合第一方面的第一种可能的实现方式,在第一方面的第六种可能的实现方式中,所述终端为所述用户任务分配所述第二初始内存量后,在所述用户任务的使用内存量达到所述第二初始内存量时,触发对所述用户任务的使用内存进行垃圾回收。
结合第一方面和第一方面的第一种至第六种可能的实现方式,在第一方面的第七种可能的实现方式中,所述第一类任务为在所述终端前台运行的任务,所述第二类任务为在所述终端后台运行的任务。
第二方面,提供一种内存管理装置,该内存管理装置具有实现上述第一方面和第一方面的第一种至第七种可能的实现方式中的任一种方法设计中终端行为的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
第三方面,提供一种终端,该终端具有实现上述第一方面和第一方面的第一种至第七种可能的实现方式中的任一种方法设计中终端行为的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块。
结合第三方面,在第三方面的第一种可能的实现方式中,终端的结构包括存储器和处理器,其中,所述存储器用于存储一组程序,所述处理器用于调用所述存储器存储的程序以执行如上述第一方面和第一方面的第一种至第七种可能的实现方式中的任一种所述的方法。
第四方面,提供了一种计算机存储介质,用于储存为上述方面所述的内存管理装置所用的计算机软件指令,其包含用于执行上述方面所设计的程序。
第五方面,提供了一种计算机存储介质,用于储存为上述方面所述的终端所用的计算机软件指令,其包含用于执行上述方面所设计的程序。
本申请提供的方案能够使得用户关注度比较高的任务在运行过程中的使用内存不容易完全占用终端为其分配的初始内存量,也就不容易触发垃圾回收,不容易引起垃圾回收过程中造成的***卡顿问题,减小了垃圾回收对用户使用该任务时的体验的影响。
附图说明
图1为本申请实施例中进程内存空间分配示意图;
图2为本申请实施例中垃圾回收的对象引用示意图;
图3为本申请实施例中内存管理方法流程图;
图4为本申请实施例中内存管理方法在智能手机场景的示意图;
图5a为传统内存管理方法示意图;
图5b为本申请实施例中内存管理方法示意图;
图6为本申请实施例中交互敏感程度、前后台任务变化示意图;
图7为本申请实施例中前台任务垃圾回收执行方法示意图;
图8为本申请实施例中一种场景下垃圾回收示意图;
图9为本申请实施例中内存管理装置结构示意图;
图10为本申请实施例中终端结构示意图;
图11为本申请实施例中另一种终端结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
本申请实施例中涉及的内存管理方法较佳的适用于应用自动内存管理技术进行垃圾回收的场景,本申请实施例以下将以应用自动内存管理技术进行垃圾回收的场景为例进行介绍。自动内存管理以进程为单位,自动处理着一个用于组织内存的分配和释放内存空间的精确的算法。如图1所示,以一个进程为例,从内存组织与分配的角度看,根据内存数据的用途和生命周期,一个进程的内存空间被组织为若干不同的数据区,包括堆、方法区、栈、程序寄存器。其中,堆内存中几乎存放所有的对象实例,根据用户任务的执行不断变化,是用户的内存分配和垃圾收集管理的主要区域。现有的自动内存管理实现过程中,当一个进程运行过程中占用的内存达到预先为其分配的初始内存量时,就会触发对这个进程进行垃圾回收,垃圾回收主要是针对堆内存进行的。垃圾回收的目的就是将内存中不需要的垃圾找出来并释放的过程。如图2所示为垃圾回收的对象引用图。通常采用对对象进行可达性分析来确定回收范围,从根对象集开始向下搜索,搜索对象所经过的路径称为引用链,引用链上的对象为可达对象,当一个对象到根对象集没有任何引用链相连时,可以判定该对象为垃圾对象。在可达性分析的过程中,在特定阶段需要将对象应用图静止下来,也就是将这个进程的运行停止下来,如果这个进程暂停时间过长,会导致***的一次卡顿。
本申请实施例提供的内存管理的方法可应用于任意终端,较佳的应用于智能移动终端,例如,手机、上网本、笔记本电脑、车载智能设备等。
终端在对不同的任务(或者说不同的进程)进行垃圾回收过程中造成的***卡顿对用户体验的影响不同,例如,用户对前台任务的关注度和服务质量要求比较高,终端对前台任务进行垃圾回收过程中造成的***卡顿对用户的影响就会比较大。基于这个原因,本申请实施例中,终端在对当前运行的任务进行初始内存量的分配时,采用资源倾斜策略,为不同的任务分配不同的初始内存量。例如,为前台任务分配比后台任务较高的初始内存量,这样,前台任务在运行过程中的使用内存就不容易完全占用终端为其分配的初始内存量,也就不容易触发垃圾回收,不容易引起垃圾回收过程中造成的***卡顿问题,减小了垃圾回收对用户使用前台任务时的体验的影响。
下面结合附图对本申请实施例提供的内存管理方法、装置及终端进行详细说明。
参阅图3所示,本申请实施例提供的内存管理方法的流程如下所述。
在301部分,终端对用户任务进行识别。
具体地,终端将正在运行的任务至少分为第一类任务和第二类任务。举例来说,分类方法可以是,将正在运行且用户正在操作的任务确定为第一类任务,将正在运行且用户未操作的任务确定为第二类任务,例如,第一类任务为在终端前台运行的任务,第二类任务为在终端后台运行的任务。
或者,分类方法也可以是,将正在运行且用户对服务质量要求较高的任务确定为第一类任务,将正在运行且用户对服务质量要求较低的任务确定为第二类任务,例如,第一类任务为语音通话业务或者音乐播放业务等,第二类任务为下载业务。
当然,随着用户在使用过程中的不断变化,用户任务可以在第一类任务与第二类任务之间进行切换。例如,当前用户任务为第一类任务,当用户新建立一项任务时,新建立的任务可能会变成第一类任务,而当前用户任务被动地变成第二类任务。
在302部分,终端若识别出所述用户任务为第一类任务,则为所述用户任务分配第一初始内存量,并在所述用户任务的使用内存量达到所述第一初始内存量时,为所述用户任务分配第一内存增量。
在303部分,终端若识别出所述用户任务为第二类任务,则为所述用户任务分配第二初始内存量,并在所述用户任务的使用内存量达到所述第二初始内存量时,为所述用户任务分配第二内存增量;
其中,302部分所述的第一初始内存量高于303部分所述的第二初始内存量;且302部分所述的第一内存增量高于303部分所述的第二内存增量。
具体的,终端若识别出所述用户任务为第一类任务,则终端根据历史经验或者其他方法,确定所述用户任务的内存需求量,根据确定出的内存需求量为所述用户任务分配第一初始内存量。例如,若所述用户任务为语音通话业务,则终端根据历史经验,确定语音通话业务的内存需求量,根据确定的内存需求量为用户的语音通话业务分配第一初始内存量。
终端若识别出所述用户任务为第二类任务,则终端根据预先配置的标准初始内存量为用户任务分配第二初始内存量。第一初始内存量大于第二初始内存量,也就是说,终端在内存分配方面,考虑到第一类任务的优先级高于第二类任务,将内存资源向第一类任务倾斜。
这样,终端能够保证当用户任务为第一类任务时用户任务的内存需求量,使得终端在执行用户任务时不容易触发垃圾回收,进一步减小了因垃圾回收带来的***卡顿问题,提高了终端在执行第一类任务时的用户体验。
当用户任务的使用内存量达到终端为其分配的初始内存量时,为了保证用户任务的正常运行,终端为其分配内存增量。在分配内存增量方面,终端也会考虑第一类任务和第二类任务的优先级,若用户任务为第一类任务,则终端为用户任务分配第一内存增量,若用户任务为第二类任务,则终端为用户任务分配第二内存增量,第一内存增量大于第二内存增量。这样,终端在用户任务为第一类任务的情况下,当用户任务的使用内存达到第一初始内存量时,再次采用内存资源倾斜策略,为用户任务的使用内存增加了二次保障。
对于垃圾回收的策略,本申请中,对于用户任务为第一类任务来说,采取两种回收方式。
第一种回收方式:当用户任务的使用内存量达到终端为其分配的初始内存量时,立即触发终端对用户任务的内存进行垃圾回收。
第二种回收方式:当用户任务的使用内存量达到终端为其分配的初始内存量时,根据用户任务与用户的操作频度选择对用户任务的内存进行垃圾回收的时机。
具体地,在用户任务的使用内存量达到终端为其分配的初始内存量之前,一般在终端识别出用户任务为第一类任务时,进一步识别用户对用户任务的操作频度,若确定用户对用户任务的操作频度高于预设的操作频度阈值,则在用户任务的使用内存达到第一初始内存量时,只是针对用户任务记录垃圾回收需求,并不对用户任务的使用内存进行垃圾回收,而是在确定用户对用户任务的操作频度不高于预设的操作频度阈值时,或者,在确定用户任务由第一类任务更换为第二类任务时,依据记录的所述垃圾回收需求,触发对用户任务的使用内存进行垃圾回收。这样,即避免了垃圾回收对第一类任务的影响,又避免了第一类任务的内存膨胀。当然,在垃圾回收过程中,终端继续监测用户对用户任务的操作频度,若确定用户对用户任务的操作频度再一次高于预设的操作频度阈值,则中断垃圾回收。总之,在用户对用户任务的操作频度高于预设的操作频度阈值的阶段中,终端避免对用户任务进行垃圾回收,也就完全避免了因垃圾回收造成***卡顿带来的影响用户体验的问题,保证了终端在执行第一类任务时的顺畅。
对于用户任务为第二类任务来说,在用户任务的使用内存量达到终端为其分配的第二初始内存量时,立即触发对用户任务的使用内存进行垃圾回收。
以下将结合具体应用场景对本申请实施例提供的内存管理方法作进一步详细的说明。假设上述终端为智能手机,上述第一类任务为在智能手机前台运行的任务(简称为前台任务),上述第二类任务为在智能手机后台运行的任务(简称为后台任务)。
如图4所示为本申请实施例的内存管理方法应用于智能手机场景在某一应用时刻的示意图。在智能手机上前台运行的任务接受用户的点击、滑动等用户输入操作,将执行结果展现给用户。相较于后台任务,用户对前台任务有更高的关注度和服务质量要求。终端在内存分配时,将有限内存资源向前台任务倾斜,分配给前台任务更高的初始内存量和更高的内存增量。实际应用中,当任务运行的使用内存达到初始内存量时,智能手机就会为其分配内存增量,当任务运行的使用内存达到分配内存增量后的内存量时,智能手机将会再次为其分配内存增量,一般来说,每次分配的内存增量是相同的,当然也可以根据具体情况设置不同的内存增量,图4所示的示意图以内存增量相同为例进行举例。
自动内存管理技术中,垃圾回收主要负责回收的区域是堆内存区。下面以智能手机对前台任务的堆内存进行管理的方法为例,以传统方法(如图5a所示)和本申请提供的方法(如图5b所示)进行对比介绍。
如图5a所示,传统方法中,智能手机分配给前台任务的初始内存量和内存增量较少,一般与分配给后台任务的初始内存量和内存增量没有差别,在前台任务运行过程中,前台任务的使用内存很容易达到为其分配的初始内存量(即已使用的内存达到图中黑色粗横线条),很容易触发智能手机对前台任务进行垃圾回收,在智能手机为其分配内存增量之后(图中黑色粗横线条上移代表分配内存增量,黑色粗横线条以下为前台任务可用内存),前台任务的使用内存又很容易达到增加内存增量后的内存量,便再一次触发智能手机对前台任务进行垃圾回收。那么,前台任务在运行过程中,触发垃圾回收的执行频率如图5a中黑色竖线条区间所示,可见非常频繁,这样,大量的垃圾回收将加大***卡顿的发生频率,也就加大了对用户体验的影响。
相比来说,如图5b所示,本申请提供的方法中,智能手机分配给前台任务的初始内存量和内存增量一般比分配给后台任务的初始内存量和内存增量较多,在前台任务运行过程中,前台任务的使用内存很不容易达到为其分配的初始内存量(即已使用的内存不容易达到图中黑色粗横线条),即很不容易触发智能手机对前台任务进行垃圾回收。不可避免,若前台任务的使用内存达到了为其分配的初始内存量,则智能手机一方面触发垃圾回收,另一方面为前台任务分配较多的内存增量(图中黑色粗横线条上移代表分配内存增量,黑色粗横线条以下为前台任务可用内存),这样,前台任务的使用内存便不容易再次达到增加内存增量后的内存量,这样就不会轻易的再一次触发智能手机对前台任务进行垃圾回收。前台任务在运行过程中,触发垃圾回收的执行频率如图5b中黑色竖线条区间所示,可见相比传统方法,本申请提供的方法将垃圾回收化零为整,执行频率降低,这样,较少了***卡顿的发生频率,也就进一步减小了在执行前台任务时对用户体验的影响。
如上述图4和图5b所述,智能手机在前台任务的使用内存达到为其分配的初始内存量时,一方面触发垃圾回收,另一方面为其分配内存增量。本申请实施例中,针对前台任务触发垃圾回收的方法,除了采用图4和图5b所述的方法外,还设计了一种触发垃圾回收的方法,具体如下所述。
一、区分交互敏感程度。
智能手机在识别出前台任务时,为前台任务分配初始内存量,并进一步识别用户与前台任务的操作频度,智能手机预先设置操作频度阈值;
换一种说法,智能手机进一步识别前台任务与用户的交互敏感程度,智能手机预先设置前台任务与用户的交互敏感程度阈值,当前台任务与用户的交互敏感程度高于预设的交互敏感程度阈值时,认为前台任务为交互敏感的任务;相反,当前台任务与用户的交互敏感程度不高于预设的交互敏感程度阈值时,认为前台任务为交互不敏感的任务。智能手机的应用过程中,用户与运行任务之间的交互可以是用户对触摸屏幕的输入,如点击、滑动、手势、短按、长按等,或者其他器件的输入,如传感器移动、硬件键盘按键、耳机按键、遥控器按键等。在任意一个时间点,用户只能与一个前台任务进行操作。
由于后台任务与用户之间无交互,因此后台任务不涉及交互敏感或者交互不敏感的区分。
实际应用中,根据用户使用的不断变化,智能手机上运行的任务会发生交互敏感程度的变化,或者前后台任务的变化。
例如,如图6所示,智能手机上运行的任务有任务1~任务5五个任务,其中,在状态一时,任务1、任务2和任务3属于前台任务组,任务4和任务5属于后台任务组,任务1为交互敏感任务,任务2和任务3为交互不敏感任务,任务4和任务5与用户无交互。
状态一转变为状态二:当用户不再对任务1进行频繁操作,即任务1与用户之间的交互敏感程度降低时,任务1由交互敏感任务转变为交互不敏感任务。例如,在状态一,任务1为用户在社交应用中输入一条信息并发送,在状态二,用户完成这条信息的发送后进入了等待状态,则任务1由前台任务的交互敏感任务转变为前台任务的交互不敏感任务。
状态一转变为状态三:任务1为前台任务的交互敏感任务,当用户打开任务4时,任务1由前台任务转变为后台任务,任务4由后台任务转变为前台任务且为交互敏感任务。
二、根据交互敏感程度确定垃圾回收时机。
用户对前台任务的关注度和服务质量要求很高,尤其对前台任务中的交互敏感任务,虽然上述图4和图5b所述的方案中,对于前台任务,智能手机分配的较高的初始内存量和较高的内存增量,但是,随着前台任务的运行,不可避免的还是会触发垃圾回收。
基于此,本申请实施例中,在分配给前台任务较高的初始内存量之后和内存增量之后,进一步判断前台任务的交互敏感程度,在前台任务的使用内存达到为其分配的初始内存量之后,若确定前台任务为交互敏感任务,则只是为其分配内存增量,并不触发垃圾回收,而是先记录垃圾回收需求,在确定前台任务更换为交互不敏感任务或者后台任务时,才触发垃圾回收。这样,既能避免前台任务的内存膨胀,又能完全避免了垃圾回收时***卡顿对前台任务造成的影响,大大提升了智能手机在执行前台任务时用户的体验。
例如,如图7所示为前台任务垃圾回收执行方法示意图。前台任务1与用户频繁交互的交互敏感区间,使用内存达到过初始内存量,本应有一次垃圾回收(虚斜线区间),但智能手机将垃圾回收的时机推移到任务1的交互敏感区间外(黑色区间)。同理,前台任务2在交互敏感区间本应发生的垃圾回收也被推移到交互敏感区间外。
如图8所示,对图7中所示的任务1的垃圾回收方法结合内存管理方法作进一步详细说明。前台任务1在状态1时,使用内存达到为其分配的初始内存量,由于在交互敏感区间,因此智能手机在状态2时仅为其分配内存增量,并不触发垃圾回收,同时也记本次垃圾回收需求。在交互敏感区间外的状态3时触发垃圾回收,在垃圾回收之后,智能手机可以将前台任务1可用的内存量调整为初始内存量,当然也可以维持在增加内存增量之后的内存量。前台任务1的内存量变化如图8所示。
基于同一发明构思,如图9所示,本申请实施例还提供了一种内存管理装置90,用于执行本申请实施例上述内存管理方法,所述内存管理装置90包括:识别单元91和分配单元92。其中:
识别单元91,用于对用户任务进行识别;
分配单元92,用于在所述识别单元91识别出所述用户任务为第一类任务时,为所述用户任务分配第一初始内存量,并在所述用户任务的使用内存量达到所述第一初始内存量时,为所述用户任务分配第一内存增量;
以及,在所述识别单元91识别出所述用户任务为第二类任务时,为所述用户任务分配第二初始内存量,并在所述用户任务的使用内存量达到所述第二初始内存量时,为所述用户任务分配第二内存增量;
其中,所述第一类任务为正在运行且用户正在操作的任务,所述第二类任务为正在运行且用户未操作的任务;所述第一初始内存量高于所述第二初始内存量;所述第一内存增量高于所述第二内存增量。
较佳的,所述识别单元91还用于,在所述用户任务的使用内存达到所述第一初始内存量之前,判断所述用户对所述用户任务的操作频度是否高于预设的操作频度阈值;
较佳的,所述装置90还包括内存管理单元93,所述内存管理单元93用于,在所述识别单元91确定所述用户对所述用户任务的操作频度高于预设的操作频度阈值,且所述用户任务的使用内存达到所述第一初始内存量时,放弃对所述用户任务的使用内存进行垃圾回收,并针对所述用户任务记录垃圾回收需求。
较佳的,所述内存管理单元93还用于,在所述识别单元91确定所述用户对所述用户任务的操作频度不高于所述预设的操作频度阈值时,或者,在确定所述用户任务由所述第一类任务更换为所述第二类任务时,依据记录的所述垃圾回收需求,触发对所述用户任务的使用内存进行垃圾回收。
较佳的,所述分配单元92具体用于:
确定所述第一类任务的内存需求量,根据确定出的内存需求量为所述用户任务分配第一初始内存量。
较佳的,所述内存管理单元93还用于,在所述分配单元92为所述用户任务分配所述第二初始内存量后,在所述用户任务的使用内存量达到所述第二初始内存量时,触发对所述用户任务的使用内存进行垃圾回收。
基于同一发明构思,如图10所示,本申请实施例还提供了一种终端1000,用于执行本申请实施例上述提供的内存管理方法,所述终端1000包括存储器1001和处理器1002。其中,存储器1001,用于存储一组程序;所述处理器1002用于调用存储器1001存储的程序,可以执行上述实施例中的一个或多个步骤,或其中可选的实施方式,使得所述终端1000实现上述内存管理方法中终端的功能。
较佳的,终端1000还包括总线1003,存储器1001、处理器1002均与总线1003连接。
处理器1002可以是中央处理器(英文:central processing unit,缩写:CPU),网络处理器(英文:network processor,缩写:NP)或者CPU和NP的组合。
处理器1002还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(英文:application-specific integrated circuit,缩写:ASIC),可编程逻辑器件(英文:programmable logic device,缩写:PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(英文:complex programmable logic device,缩写:CPLD),现场可编程逻辑门阵列(英文:field-programmable gate array,缩写:FPGA),通用阵列逻辑(英文:generic arraylogic,缩写:GAL)或其任意组合。
存储器1001可以包括易失性存储器(英文:volatile memory),例如随机存取存储器(英文:random-access memory,缩写:RAM);存储器1001也可以包括非易失性存储器(英文:non-volatile memory),例如快闪存储器(英文:flash memory),硬盘(英文:hard diskdrive,缩写:HDD)或固态硬盘(英文:solid-state drive,缩写:SSD);存储器1001还可以包括上述种类的存储器的组合。
基于同一发明构思,本申请实施例中还提供了另一种终端1100,用于执行本申请上述提供的内存管理方法,该终端1100可以为手机、平板电脑、个人数字助理(英文:Personal Digital Assistant,缩写:PDA)、销售终端(英文:Point of Sales,缩写:POS)、或车载电脑等。
图11示出的是终端1100的结构示意图。
参考图11,终端1100包括,射频(英文:Radio Frequency,简称:RF)电路1110、存储器1120、输入单元1130、显示单元1140、处理器1160、音频电路1170、无线保真(英文:Wireless Fidelity,简称:WiFi)模块1180、电源1190。该存储器1120可用于存储处理器1160执行的程序;该输入单元1130用于接收用户的输入,比如用户对触摸屏的点击、滑动、手势、短按、长按等,或者接收传感器移动产生的信号、硬件键盘按键输入,耳机按键输入,遥控器输入等;该处理器1160用于执行存储器1120存储的程序,使得终端1100可以执行本申请上述提供的内存管理方法。
该存储器1120可以包括易失性存储器(英文:volatile memory),例如随机存取存储器(英文:random-access memory,缩写:RAM);存储器1001也可以包括非易失性存储器(英文:non-volatile memory),例如快闪存储器(英文:flash memory),硬盘(英文:harddisk drive,缩写:HDD)或固态硬盘(英文:solid-state drive,缩写:SSD),光盘,软盘或磁带机等;存储器1120还可以包括上述种类的存储器的组合。
该输入单元1130可用于接收输入的数字或字符信息,以及产生与终端1100的用户设置以及功能控制有关的信号输入。具体地,本申请实施例中,该输入单元1130可以包括触控面板1131。触控面板1131,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板1131上或在触控面板1131的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板1131可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给该处理器1160,并能接收处理器1160发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板1131。除了触控面板1131,输入单元1130还可以包括其他输入设备1132,其他输入设备1132可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
该终端1100还可以包括显示单元1140,该显示单元1140可用于显示由用户输入的信息或提供给用户的信息以及终端1100的各种菜单界面。该显示单元1140可包括显示面板1141,可选的,可以采用液晶显示器(英文:Liquid Crystal Display,简称:LCD)或有机发光二极管(英文:Organic Light-Emitting Diode,简称:OLED)等形式来配置显示面板1141。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的精神和范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (8)

1.一种内存管理方法,其特征在于,包括:
终端对用户任务进行识别;
若识别出所述用户任务为第一类任务,则为所述用户任务分配第一初始内存量,并在所述用户任务的使用内存量达到所述第一初始内存量时,为所述用户任务分配第一内存增量;
若识别出所述用户任务为第二类任务,则为所述用户任务分配第二初始内存量,并在所述用户任务的使用内存量达到所述第二初始内存量时,为所述用户任务分配第二内存增量;
其中,所述第一类任务为正在运行且用户正在操作的任务,所述第二类任务为正在运行且用户未操作的任务;所述第一初始内存量高于所述第二初始内存量;所述第一内存增量高于所述第二内存增量;
若识别出所述用户任务为第一类任务,所述终端若在所述用户任务的使用内存达到所述第一初始内存量之前,确定所述用户对所述用户任务的操作频度高于预设的操作频度阈值,则在所述用户任务的使用内存达到所述第一初始内存量时,针对所述用户任务记录垃圾回收需求;
所述终端针对所述用户任务记录垃圾回收需求之后,还包括:
所述终端在确定所述用户对所述用户任务的操作频度不高于所述预设的操作频度阈值时,依据记录的所述垃圾回收需求,触发对所述用户任务的使用内存进行垃圾回收。
2.如权利要求1所述的方法,其特征在于,所述终端为所述用户任务分配所述第一初始内存量,包括:
所述终端确定所述第一类任务的内存需求量,根据确定出的内存需求量为所述用户任务分配第一初始内存量。
3.如权利要求1所述的方法,其特征在于,所述终端为所述用户任务分配所述第二初始内存量后,在所述用户任务的使用内存量达到所述第二初始内存量时,触发对所述用户任务的使用内存进行垃圾回收。
4.如权利要求1-3任一项所述的方法,其特征在于,所述第一类任务为在所述终端前台运行的任务,所述第二类任务为在所述终端后台运行的任务。
5.一种内存管理装置,其特征在于,包括:
识别单元,用于对用户任务进行识别;
分配单元,用于在所述识别单元识别出所述用户任务为第一类任务时,为所述用户任务分配第一初始内存量,并在所述用户任务的使用内存量达到所述第一初始内存量时,为所述用户任务分配第一内存增量;以及,
在所述识别单元识别出所述用户任务为第二类任务时,为所述用户任务分配第二初始内存量,并在所述用户任务的使用内存量达到所述第二初始内存量时,为所述用户任务分配第二内存增量;
其中,所述第一类任务为正在运行且用户正在操作的任务,所述第二类任务为正在运行且用户未操作的任务;所述第一初始内存量高于所述第二初始内存量;所述第一内存增量高于所述第二内存增量;
所述识别单元还用于,在所述用户任务的使用内存达到所述第一初始内存量之前,判断所述用户对所述用户任务的操作频度是否高于预设的操作频度阈值;
所述装置还包括内存管理单元,所述内存管理单元用于,若所述识别单元识别出所述用户任务为第一类任务,且确定所述用户对所述用户任务的操作频度高于预设的操作频度阈值,在所述用户任务的使用内存达到所述第一初始内存量时,针对所述用户任务记录垃圾回收需求;
所述内存管理单元还用于,在针对所述用户任务记录垃圾回收需求之后,在所述识别单元确定所述用户对所述用户任务的操作频度不高于所述预设的操作频度阈值时,依据记录的所述垃圾回收需求,触发对所述用户任务的使用内存进行垃圾回收。
6.如权利要求5所述的装置,其特征在于,所述分配单元具体用于:
确定所述第一类任务的内存需求量,根据确定出的内存需求量为所述用户任务分配第一初始内存量。
7.如权利要求5所述的装置,其特征在于,所述内存管理单元还用于,在所述分配单元为所述用户任务分配所述第二初始内存量后,在所述用户任务的使用内存量达到所述第二初始内存量时,触发对所述用户任务的使用内存进行垃圾回收。
8.一种终端,其特征在于,包括存储器和处理器,其中,所述存储器用于存储一组程序,所述处理器用于调用所述存储器存储的程序以执行如权利要求1-4任一项所述的方法。
CN201610066545.1A 2016-01-29 2016-01-29 一种内存管理方法、装置及终端 Active CN105740078B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610066545.1A CN105740078B (zh) 2016-01-29 2016-01-29 一种内存管理方法、装置及终端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610066545.1A CN105740078B (zh) 2016-01-29 2016-01-29 一种内存管理方法、装置及终端

Publications (2)

Publication Number Publication Date
CN105740078A CN105740078A (zh) 2016-07-06
CN105740078B true CN105740078B (zh) 2020-09-08

Family

ID=56247183

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610066545.1A Active CN105740078B (zh) 2016-01-29 2016-01-29 一种内存管理方法、装置及终端

Country Status (1)

Country Link
CN (1) CN105740078B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106201358A (zh) * 2016-07-15 2016-12-07 珠海市魅族科技有限公司 一种内存垃圾回收的方法及装置
CN107766128B (zh) * 2016-08-17 2021-01-29 华为技术有限公司 一种启动应用的方法及装置
CN106371896B (zh) * 2016-09-20 2019-08-23 Oppo广东移动通信有限公司 虚拟机内存配置方法及装置、移动终端
CN107220077B (zh) 2016-10-20 2019-03-19 华为技术有限公司 应用启动的管控方法和管控设备
CN106951327B (zh) * 2017-03-23 2018-11-30 维沃移动通信有限公司 一种应用程序对***影响的检测方法及移动终端
CN107357656B (zh) * 2017-06-27 2020-10-27 海南飞特同创科技有限公司 一种内存分配方法、移动终端以及计算机可读存储介质
CN109992471A (zh) * 2018-01-02 2019-07-09 ***通信有限公司研究院 一种内存监控的方法及装置
CN109739639A (zh) * 2018-12-07 2019-05-10 珠海格力电器股份有限公司 一种示教器内存使用管理方法、装置、终端及存储介质
CN111382087A (zh) * 2018-12-28 2020-07-07 华为技术有限公司 一种内存管理方法及电子设备
CN110134655A (zh) * 2019-04-30 2019-08-16 华为技术有限公司 一种资源管理方法、装置和设备
CN111506426B (zh) * 2020-04-17 2021-05-04 翱捷科技(深圳)有限公司 内存管理方法、装置及电子设备
CN115292052B (zh) * 2022-09-27 2023-08-08 荣耀终端有限公司 内存回收方法、电子设备及计算机可读存储介质
CN116049025B (zh) * 2023-01-29 2023-08-11 荣耀终端有限公司 动态调整内存回收gc参数的方法、电子设备及存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102193814A (zh) * 2010-03-09 2011-09-21 上海拜翰网络科技有限公司 嵌入式虚拟化内存动态分配方法及***
US9201693B2 (en) * 2012-09-04 2015-12-01 Microsoft Technology Licensing, Llc Quota-based resource management
CN103324500B (zh) * 2013-05-06 2016-08-31 广州市动景计算机科技有限公司 一种回收内存的方法及装置
US9678797B2 (en) * 2014-03-10 2017-06-13 Microsoft Technology Licensing, Llc Dynamic resource management for multi-process applications
CN104375828B (zh) * 2014-10-27 2018-07-27 小米科技有限责任公司 内存优化方法及装置

Also Published As

Publication number Publication date
CN105740078A (zh) 2016-07-06

Similar Documents

Publication Publication Date Title
CN105740078B (zh) 一种内存管理方法、装置及终端
CN106406966B (zh) 一种应用程序的预加载方法及移动终端
EP3388946B1 (en) Memory collection method and device
US9261995B2 (en) Apparatus, method, and computer readable recording medium for selecting object by using multi-touch with related reference point
US20200333944A1 (en) Icon management method and apparatus
EP2565752A2 (en) Method of providing a user interface in portable terminal and apparatus thereof
US20140181751A1 (en) Device and method for providing relevant applications
CN105335099A (zh) 一种内存清理方法及终端
KR20130041484A (ko) 사용자 디바이스의 메뉴스크린 운용 방법 및 장치
CN104484352A (zh) 一种快速查找应用程序的方法、装置及设备
CN104360805A (zh) 应用程序图标管理方法及装置
CN102981711A (zh) 一种在触摸屏上移动应用图标的方法和***
WO2017067164A1 (zh) 多指并拢或打开手势的识别方法、装置及终端设备
WO2018036505A1 (zh) 一种终端后台应用程序的管理方法及装置
CN102866916A (zh) 一种终端及动态加载应用程序界面的方法
CN107291626A (zh) 数据存储方法和装置
CN104007873A (zh) 用于确定触摸输入对象的方法及其电子装置
CN108664286B (zh) 应用程序预加载方法、装置、存储介质及移动终端
CN103699327A (zh) 用于触摸屏终端的选择方法及装置、终端设备
CN114328281A (zh) 固态硬盘异常掉电处理方法、装置、电子设备及介质
CN102981698A (zh) 用于在便携式终端中管理应用的方法和设备
CN103513822A (zh) 用于改进触摸辨识的方法及其电子装置
CN105528172A (zh) 一种调整图标的响应区域的方法及终端
CN110704139B (zh) 一种图标分类的方法及装置
CN102915178A (zh) 一种基于触摸屏进入多选列表界面的方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant