CN113590500A - 一种内存管理方法及终端设备 - Google Patents

一种内存管理方法及终端设备 Download PDF

Info

Publication number
CN113590500A
CN113590500A CN202010367180.2A CN202010367180A CN113590500A CN 113590500 A CN113590500 A CN 113590500A CN 202010367180 A CN202010367180 A CN 202010367180A CN 113590500 A CN113590500 A CN 113590500A
Authority
CN
China
Prior art keywords
memory
target running
running application
application
page
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.)
Granted
Application number
CN202010367180.2A
Other languages
English (en)
Other versions
CN113590500B (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 CN202010367180.2A priority Critical patent/CN113590500B/zh
Priority to EP21797009.4A priority patent/EP4131012B1/en
Priority to PCT/CN2021/078938 priority patent/WO2021218370A1/zh
Priority to US17/920,513 priority patent/US12086069B2/en
Publication of CN113590500A publication Critical patent/CN113590500A/zh
Application granted granted Critical
Publication of CN113590500B publication Critical patent/CN113590500B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1689Synchronisation and timing concerns
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请提供了一种内存管理方法及终端设备,该方法可以利用目标运行应用中发生页异常的内存页,确定出应用启动和使用所需要的常用内存页和非常用内存页,终端将应用启动和使用需要的内存页保留在内存,从而改善后台运行的应用再次被启动时出现卡顿的问题,提高应用的保活性能,终端将非常用内存页迁移至存储器的交换分区,以节省内存资源。该方法包括:当目标运行应用被热启动时,终端确定处于后台运行的应用为目标运行应用,当该目标运行应用被热启动时,终端根据目标运行应用中发生页异常的内存页,确定目标运行应用的常用内存页,最终在目标运行应用切换至后台运行后,终端将该常用内存页保留在内存,并将非常用内存页交换至存储器的交换分区。

Description

一种内存管理方法及终端设备
技术领域
本申请涉及终端技术领域,尤其涉及一种内存管理方法及终端设备。
背景技术
目前,移动端应用的种类和数量急剧增多,且这些应用对内存的需求量逐年膨胀,这与移动设备有限且昂贵的内存资源产生矛盾。当应用切换至后台,其占用内存实际上并未释放,为满足新启动应用的内存需求,系统将对后台应用执行杀进程或内存压缩操作。然而,过度杀进程会带来应用保活能力下降的问题,引发一系列副作用,例如:后台应用被再次启动时重新进入广告界面、启动速度慢、用户历史数据丢失等。内存压缩是另一种回收内存资源的手段,通过将内存中的内存页进行压缩可节省出一部分内存空间。而内存压缩本质上通过消耗中央处理器(central processing unit,CPU)资源来换取内存资源,存在计算资源开销,且内存压缩操作在压缩率上存在极限。
目前,还存在另一种节省内存资源的方式,该方式可以利用UFS(UNIX文件系统)等存储资源,开辟一块交换分区供内存使用,当内存紧张时,通过将内存中部分内存页迁移到该交换分区的方式以节省内存资源。传统的页面置换算法是基于内核LRU(least recentlyused,最近最少使用)链表进行内存页回收,具体的,系统维护活跃链表与非活跃链表,较长时间未被使用的内存页被认为是冷页,放入非活跃链表,而经常被使用的内存页被认为是热页,放入活跃链表。当执行内存回收,即执行交换(swap)操作时,非活跃链表中的冷页优先换出。但是,该页面置换算法存在两个缺陷,首先对冷页和热页的判定需要较长时间,无法在短时间内主动筛选出冷页和热页;其次,仅以时间长短作为冷页和热页的判定标准并不完全准确,应用切回至前台时仍会出现卡顿的问题。
发明内容
本申请提供一种内存管理方法及终端设备,用于准确地确定出应用启动和使用所需要的常用内存页,在所述目标运行应用切换至后台运行时,将该常用内存页保留在内存,从而改善后台运行的应用再次被启动时出现卡顿的问题,提高应用的保活性能。
第一方面,本申请实施例提供一种内存管理方法,该方法可以应用于终端设备,该方法包括:当目标运行应用被热启动时,终端确定处于后台运行的应用为目标运行应用,当该目标运行应用被热启动时,终端根据目标运行应用中发生页异常的内存页,确定目标运行应用的常用内存页,最终在目标运行应用切换至后台运行后,终端将所述常用内存页保留在内存中,以及将所述非常用内存页从内存交换至存储器的交换分区。
本申请实施例中,一方面,该方法可以利用目标运行应用中发生页异常的内存页,确定出应用启动和使用所需要的常用内存页,终端将应用启动和使用需要的内存页保留在内存,从而改善后台运行的应用再次被启动时出现卡顿的问题,提高应用的保活性能,另一方面,该方法可以准确地筛选出除了常用内存页之外的,即需要迁移至交换分区的非常用内存页,终端将非常用内存页迁移至存储器的交换分区,以节省内存资源。
在一种可能的设计中,终端的系统内核将处于后台运行的应用确定为目标应用,或者终端的系统内核根据用户设置的应用的标识,确定目标运行应用。
在一种可能的设计中,目标运行应用被热启动指的是目标运行应用从后台运行切换至前台运行,目标运行应用热启动对应的起始时刻可以是目标运行应用的进程从后台运行开始切换至前台运行的第一时刻,终端的系统内核可以将第一时刻之后的第二时长对应的时间段作为热启动过程对应的时间段,第二时长可以是设定阈值,也可以是根据目标运行应用的状态信息确定的。
在一种可能的设计中,假设终端中的目标运行应用从前台运行切换至后台运行时,终端的系统内核通过内存压缩这一操作对应用的所有或部分内存页进行压缩,当目标运行应用被热启动时,在所述目标运行应用被解压缩时,将所述目标运行应用中被解压的内存页,确定为所述目标运行应用的常用内存页。
本申请实施例中,终端利用应用被热启动时的解压缩操作,从而从压缩数据中确定出应用启动和使用所需要的常用内存页,即通过利用内存压缩解压缩这一内核已有的机制,就可以准地主动筛选出应用启动和使用的常用页,且不需要基于长时间历史信息进行冷热页识别,因应用启动和使用需要的内存页保留在内存,从而改善后台运行的应用再次被启动时出现卡顿的问题,提高应用的保活性能,一定程度上可以提升用户使用体验。
在一种可能的设计中,假设终端中的目标运行应用从前台运行切换至后台运行时,终端对所述目标运行应用中的部分内存页换出内存,当目标运行应用被热启动时,在目标运行应用中的内存页被换入内存时,将目标运行应用中被交换至内存的内存页,确定为目标运行应用的常用内存页。
本申请实施例中,终端利用应用被热启动时的交换操作,确定出应用启动和使用所需要的常用内存页,因应用启动和使用需要的内存页保留在内存,从而改善后台运行的应用再次被启动时出现卡顿的问题,提高应用的保活性能,一定程度上可以提升用户使用体验。
在一种可能的设计中,假设终端中的目标运行应用从前台运行切换至后台运行时,终端对目标运行应用中的内存页进行解映射,当目标运行应用被热启动时,将目标运行应用中被重新映射的内存页,确定为目标运行应用的常用内存页。
本申请实施例中,终端利用应用被热启动时的重新映射操作,确定出应用启动和使用所需要的常用内存页,因应用启动和使用需要的内存页保留在内存,从而改善后台运行的应用再次被启动时出现卡顿的问题,提高应用的保活性能,一定程度上可以提升用户使用体验。
在一种可能的设计中,在目标运行应用被解压缩时,终端可以对目标运行应用中被解压的内存页进行标记,将被标记的内存页确定为目标运行应用的常用内存页;或者,在目标运行应用中的内存页被执行交换操作时,对目标运行应用中被交换至内存的内存页进行标记,将被标记的内存页确定为目标运行应用的常用内存页;或者,在目标运行应用中的内存页被重新映射时,对目标运行应用中被重新映射的内存页进行标记,将被标记的内存页确定为目标运行应用的常用内存页。
本申请实施例中,终端按照上述方法主动筛选出应用启动和使用的常用内存页,且不需要基于长时间历史信息进行冷热页识别,因应用启动和使用需要的内存页保留在内存,从而改善后台运行的应用再次被启动时出现卡顿的问题,提高应用的保活性能,一定程度上可以提升用户使用体验。
一种可能的设计中,终端根据被解压的内存页确定目标运行应用常用的内存页的另一种具体方式是:当所述目标运行应用每次被热启动时,所述终端对所述目标运行应用对应的压缩数据中被解压的内存页进行标记;所述终端根据所述内存页的标记信息,确定所述被解压的内存页;在目标运行应用被第K次连续热启动时,终端将被标记次数大于设定阈值的内存页,确定为目标运行应用的常用内存页,并记录所述内存页的标记次数。换句话说,终端通过分析目标运行应用在多次连续热启动时所解压的内存页,确定目标运行应用的常用内存页。相比上一种方式,该方法确定出的常用内存页更加准确。
一种可能的设计中,当所述目标运行应用每次被热启动时,所述终端将所述目标运行应用的进程运行时所使用的内存页的状态从第一状态更新为第二状态,其中所述第一状态是在所述目标运行应用切换到后台运行时所述目标运行应用的内存页被标记的状态;终端根据所述第二状态,确定所述进程运行时所使用的内存页,并记录所述内存页被标记为第二状态的标记次数;
最终,在目标运行应用被第K次连续热启动时,所述终端将标记次数大于设定阈值的内存页,确定为所述目标运行应用的常用内存页。换句话说,终端通过分析目标运行应用在多次热启动时所使用的内存页,确定目标运行应用的常用内存页。相比上一种方式,该方法确定出的常用内存页更加准确。
一种可能的设计中,终端将所述常用内存页保留在内存中,以及将非常用内存页从内存交换至存储器的交换分区,包括:终端对所述目标运行应用的内存页执行交换操作;当所述目标运行应用的内存页为所述常用内存页时,将所述常用内存页保留在内存中;当所述目标运行应用的内存页为所述非常用内存页时,将所述非常用内存页从内存交换至存储器的交换分区,可见,该方法终端准确地筛选出需要迁移至交换分区的非常用内存页后,终端及时将非常用内存页迁移至存储器的交换分区,以节省内存资源,通过这种方式可以大幅扩展内存空间,另外,可以筛选出应用启动和使用所需要的常用内存页,终端将应用启动和使用需要的内存页保留在内存,从而改善后台运行的应用再次被启动时出现卡顿的问题,提高应用的保活性能。
一种可能的设计中,终端在确定出常用内存页之后,在所述目标运行应用切换至后台运行的运行时长达到第一时长后,将常用内存页从内存交换至存储器的交换分区。本申请实施例中若常用内存页长时间不被使用,终端仍可以及时将该常用内存页迁移至存储器的交换分区,以节省内存资源,通过这种方式可以大幅扩展内存空间。
一种可能的设计中,在终端将非常用内存页迁移至存储器的交换分区之前,终端确定内存的输入输出I/O是否空闲,当内存的I/O空闲时,才将内存中的非常用内存页迁移至存储器的交换分区。本申请实施例中,该方法有助于改善内存页换出阶段的I/O开销对终端性能的影响。
在一种可能的设计中,当目标运行应用的进程被杀掉时,终端的系统内核将常用内存页从内存交换至存储器的交换分区,该方法有利于及时释放内存空间,节省内存。
第二方面,本申请实施例提供一种终端,包括处理器和存储器,其中,存储器用于存储一个或多个计算机程序;当存储器存储的一个或多个计算机程序被处理器执行时,使得该终端能够实现上述第一方面的任意一种可能的设计的方法。
第三方面,本申请实施例还提供一种装置,该装置包括执行上述任一方面的任意一种可能的设计的方法的模块/单元。这些模块/单元可以通过硬件实现,也可以通过硬件执行相应的软件实现。
第四方面,本申请实施例中还提供一种计算机可读存储介质,所述计算机可读存储介质包括计算机程序,当计算机程序在终端设备上运行时,使得所述终端设备执行上述任一方面的任意一种可能的设计的方法。
第五方面,本申请实施例还提供一种包含计算机程序产品,当所述计算机程序产品在终端上运行时,使得所述终端设备执行上述任一方面的任意一种可能的设计的方法。
第六方面,本申请实施例还提供一种芯片,所述芯片与存储器耦合,用于执行所述存储器中存储的计算机程序,以执行上述任一方面的任意一种可能的设计的方法。
附图说明
图1为本申请实施例提供的一种应用场景的示意图;
图2为本申请实施例提供的一种手机结构示意图;
图3为本申请实施例提供的一种安卓操作系统结构示意图;
图4为本申请实施例提供的一种内存管理方法流程示意图;
图5A为本申请实施例提供的一种内存页压缩场景示意图;
图5B为本申请实施例提供的一种内存页交换场景示意图;
图6为本申请实施例提供的一种内存管理方法流程示意图;
图7为本申请实施例提供的另一种内存页交换场景示意图;
图8为本申请实施例提供的一种内存管理方法流程示意图;
图9为本申请实施例提供的一种内存管理装置示意图;
图10为本申请实施例提供的一种终端结构示意图。
具体实施方式
以下,先对本申请实施例中的部分用语进行解释说明,以便于本领域技术人员理解。
1)、本申请实施例涉及的APP,简称应用,为能够实现某项或多项特定功能的软件程序。通常,终端设备中可以安装多个应用。比如,相机应用、邮箱应用、智能家居控制应用等。下文中提到的应用,可以是终端设备出厂时已安装的系统应用,也可以是用户在使用终端设备的过程中从网络下载或从其他终端设备获取的第三方应用。
2)应用的冷启动:在启动应用时,系统中没有该应用的进程,这时系统会创建一个新的进程分配给该应用;应用的热启动:在启动应用时,系统中已有该应用的进程(例:按back键、home键,应用虽然会退出,但是该应用的进程还是保留在后台。相比于应用的冷启动,应用的热启动没有创建进程以及加载资源的过程,所以应用热启动的速度要远大于冷启动的速度。
3)、内存,内存可以为随机存储器(RAM),只读存储器(ROM),以及高速缓存(CACHE)等。本发明实施例所描述的存储器的交换分区属于外存,该存储空间可以包括闪存(flash)、硬盘、光盘、USB盘、软盘或磁带机等。计算机程序通常被存储在外存上,处理器在执行处理前会将计算机程序从外存加载到内存。本发明实施例中的应用程序通常存储在外存上,处理器运行该应用程序时需要将该应用程序加载到该内存上。
4)、内存页,本申请实施例涉及页式存储管理方案,页式存储管理方案是将用户进程地址空间和内存空间按照同样大小划分为大小相等的区域,以内存页为单位进行分配,逻辑上相邻的内存页,物理上不一定相邻,由操作系统硬件完成分页,对用户来说是透明的。
发明人统计发现,应用所分配的内存页中的相当大比例的内存页在应用后续的热启动和深度使用过程中将极少再被使用。如图1所示的各类应用在不同阶段内存页换入换出量的柱状分析图,从图中可见,各类应用在启动阶段和使用过程的内存页换入量均很少,而内存页总换出量很大。以王者荣耀
Figure BDA0002476913250000051
应用程序为例,通过实际测试发现该应用从启动应用到完成游戏对战,即一次冷启动过程中实际需要的内存量约600MB,而其中过半的数据并不会被二次用到。而该应用的热启动过程所需要的数据规模则更少,王者荣耀
Figure BDA0002476913250000052
从后台(非游戏对战状态)切回至前台运行(游戏对战状态)所需内存页不足100MB。可见,各类应用在内存中囤积了大量极少使用甚至不再使用的内存页,基于这一发现,本申请实施例提供一种内存资源管理方法,该方法能够确定出应用从后台运行切回至前台运行所需要用到的内存页,即可以筛选出应用启动和深度使用需要用到的内存页(或者说“热数据”),以及不常会用到的内存页(或者说“冰数据”),并将这些热数据”保留在内存,以及将“冰数据”交换到存储器的交换分区中。该方法可以保证应用启动和深度使用需要用到的内存页保留在内存,因此可以该善后台应用切回至前台运行时所出现的卡顿问题,另一方面,应用中的不常会用到的内存页(或者说“冰数据”)被置换出内存,可以有效地节省内存资源。
为了使本申请实施例的目的、技术方案和优点更加清楚,下面将结合说明书附图以及具体的实施方式对本申请实施例中的技术方案进行详细的说明。
本申请实施例公开的各个实施例可以应用于终端设备中。在一些实施例中,终端设备可以是包含诸如个人数字助理和/或音乐播放器等功能的便携式终端,诸如手机、平板电脑、具备无线通讯功能的可穿戴设备(如智能手表)、车载设备等。便携式终端的示例性实施例包括但不限于搭载
Figure BDA0002476913250000053
或者其它操作系统的便携式终端。上述便携式终端也可以是诸如具有触敏表面(例如触控面板)的膝上型计算机(Laptop)等。还应当理解的是,在其他一些实施例中,上述终端也可以是具有触敏表面(例如触控面板)的台式计算机。
以终端设备是手机为例,图2示出了手机200的结构示意图。
手机200可以包括处理器210,外部存储器接口220,内部存储器221,USB接口230,充电管理模块240,电源管理模块241,电池242,天线1,天线2,移动通信模块251,无线通信模块252,音频模块270,扬声器270A,受话器270B,麦克风270C,耳机接口270D,传感器模块280,按键290,马达291,指示器292,摄像头293,显示屏294,以及SIM卡接口295等。其中传感器模块280可以包括触摸传感器280A(当然,手机100还可以包括其它传感器,比如、陀螺仪传感器,加速度传感器,接近光传感器、指纹传感器,环境光传感器、温度传感器,压力传感器、距离传感器、磁传感器、环境光传感器、气压传感器、骨传导传感器等,图中未示出)。
可以理解的是,本发明实施例示意的结构并不构成对手机200的具体限定。在本申请另一些实施例中,手机200可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器210可以包括一个或多个处理单元,例如:处理器210可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(Neural-network Processing Unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。其中,控制器可以是手机200的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器210中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器210中的存储器为高速缓冲存储器。该存储器可以保存处理器210刚用过或循环使用的指令或数据。如果处理器210需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器210的等待时间,因而提高了系统的效率。
处理器210可以运行本申请实施例提供的内存管理方法,用于准确地确定出应用启动和使用所需要的常用内存页,终端将应用启动和使用需要的内存页保留在内存,从而改善后台运行的应用再次被启动时出现卡顿的问题,提高应用的保活性能,提升用户使用体验。处理器210可以包括不同的器件,比如集成CPU和GPU时,CPU和GPU可以配合执行本申请实施例提供的内存管理方法,比如内存管理方法中部分算法由CPU执行,另一部分算法由GPU执行,以得到较快的处理效率。
显示屏294用于显示图像,视频等。显示屏294包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode的,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,手机200可以包括1个或N个显示屏294,N为大于1的正整数。
显示屏294与背光驱动IC294A连接,背光驱动IC 294A,用于控制所述显示屏294的背光亮度。在所述处理器210(或其中的协处理器)在实现对所述显示屏294的一次背光调节时,所述处理器210将本次调节的目标背光亮度值转换为特定格式的数据发送给所述背光驱动IC 294A,所述背光驱动IC 194A识别所述目标背光亮度值后,控制所述显示屏294的背光亮度变化,使所述显示屏的背光亮度调节到所述目标背光亮度值。所述特定格式的数据可以为脉冲占空比(Pulse Width Modulation,PWM)。在本申请实施例中,显示屏294可以是一个一体的柔性显示屏,也可以采用两个刚性屏以及位于两个刚性屏之间的一个柔性屏组成的拼接显示屏。当处理器210运行本申请实施例提供的内存管理方法后,处理器210可以控制显示屏294上的背光亮度。
摄像头293(前置摄像头或者后置摄像头,或者一个摄像头既可作为前置摄像头,也可作为后置摄像头)用于捕获静态图像或视频。通常,摄像头293可以包括感光元件比如镜头组和图像传感器,其中,镜头组包括多个透镜(凸透镜或凹透镜),用于采集待拍摄物体反射的光信号,并将采集的光信号传递给图像传感器。图像传感器根据所述光信号生成待拍摄物体的原始图像。
存储器221一般包括内存221A和外部存储器221B。内存221A可以为随机存储器(RAM),只读存储器(ROM),以及高速缓存(CACHE)等。本发明实施例所描述的预设的存储空间属于该外部存储器221B,该存储空间可以包括闪存(flash)、硬盘、光盘、USB盘、软盘或磁带机等。计算机程序通常被存储在外部存储器221B上,处理器在执行处理前会将计算机程序从外部存储器221B加载到内存221A。本发明实施例中的应用程序通常存储在外部存储器上,处理器运行该应用程序时需要将该应用程序加载到该内存上。
外部存储器221B中包含了可实现本申请实施例提供的内存管理方法的计算机程序,从而使得处理器210读取到该操作系统程序并运行该操作系统后,该操作系统可具备本申请实施例提供的内存管理功能。进一步的,该操作系统可以向上层的应用开放该内存管理功能的调用接口,处理器150从存储器221中读取应用程序并运行该应用程序后,就可以通过该调用接口调用操作系统中提供的内存管理功能,从而实现内存管理。
此外,内部存储器221A可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
当然,本申请实施例提供的内存管理算法的代码还可以存储在外部存储器中。这种情况下,处理器210可以通过外部存储器接口220运行存储在外部存储器中的内存管理算法的代码,处理器210可以实现识别常用内存页和非常用内存页,并将常用内存页保留在内存中,将非常用内存页迁移至外部存储器221B的交换分区中。
下面介绍传感器模块280的功能。
触摸传感器280A,也称“触控面板”。触摸传感器280A可以设置于显示屏294,由触摸传感器280A与显示屏294组成触摸屏,也称“触控屏”。触摸传感器280A用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏294提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器280A也可以设置于手机200的表面,与显示屏294所处的位置不同。至于所述手机200可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
手机200的无线通信功能可以通过天线1,天线2,移动通信模块251,无线通信模块252,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。手机200中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块251可以提供应用在手机200上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块251可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(lownoise amplifier,LNA)等。移动通信模块251可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块251还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块251的至少部分功能模块可以被设置于处理器210中。在一些实施例中,移动通信模块251的至少部分功能模块可以与处理器210的至少部分模块被设置在同一个器件中。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器270A,受话器270B等)输出声音信号,或通过显示屏294显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器210,与移动通信模块251或其他功能模块设置在同一个器件中。
无线通信模块252可以提供应用在手机200上的包括无线局域网(wireless localarea networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequencymodulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块252可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块252经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器210。无线通信模块252还可以从处理器210接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
另外,手机200可以通过音频模块270,扬声器270A,受话器270B,麦克风270C,耳机接口270D,以及应用处理器等实现音频功能。例如音乐播放,录音等。手机200可以接收按键290输入,产生与手机200的用户设置以及功能控制有关的键信号输入。手机200可以利用马达291产生振动提示(比如来电振动提示)。手机200中的指示器292可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。手机200中的SIM卡接口295用于连接SIM卡。SIM卡可以通过插入SIM卡接口295,或从SIM卡接口295拔出,实现和手机200的接触和分离。
应理解,在实际应用中,手机200可以包括比图1所示的更多或更少的部件,本申请实施例不作限定。图示手机200仅是一个范例,并且手机200可以具有比图中所示出的更多的或者更少的部件,可以组合两个或更多的部件,或者可以具有不同的部件配置。图中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。
终端设备的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本发明实施例以分层架构的Android系统为例,示例性说明终端设备的软件结构。图3是本发明实施例的终端设备的软件结构框图。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和系统库,以及内核层。
应用程序层可以包括一系列应用程序包。
如图3所示,应用程序包可以包括电话、相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图3所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
电话管理器用于提供终端设备的通信功能。例如通话状态的管理(包括接通,挂断等)。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,终端设备振动,指示灯闪烁等。
Android Runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(例如:OpenGL ES),2D图形引擎(例如:SGL)等。
表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。
三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。
2D图形引擎是2D绘图的绘图引擎。
内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。
下面结合图4,对本申请实施例提供的一种内存管理方法的流程进行描述。参阅图4所示,该方法具体包括如下步骤。
步骤401,当目标应用被热启动时,终端根据目标运行应用中发生页异常的内存页,确定目标运行应用的常用内存页。
其中,一种可能的实现下,终端可以确定处于后台运行的应用为目标运行应用。具体地,终端的系统内核中可以设有守护进程,终端操作系统的框架层对应用前后台切换信息进行监听,当处于后台运行的应用被切换至前台运行时,框架层向守护进程发送信号,守护进程收到该信号后,对切换至前台运行的目标运行应用进行标记,具体地标记方式可通过在页结构(struct page)中添加变量的方式实现,从而终端可以确定出目标运行应用被热启动,处于前台运行。其中,目标运行应用热启动对应的起始时刻可以是目标运行应用的进程从后台运行开始切换至前台运行的第一时刻,终端的系统内核可以将第一时刻之后的第二时长对应的时间段作为热启动过程对应的时间段,第二时长可以是设定阈值,也可以是根据目标运行应用的状态信息确定的。例如,状态信息可以是活动组件(Activity)的状态信息或者启动完成信息等。
另一种可能的实现下,终端设备可以预先接收用户的设置,终端将用户设置的应用确定为目标运行应用。例如,用户可以通过终端的交互界面设置微信
Figure BDA0002476913250000101
应用需要执行内存管理,这样,微信
Figure BDA00024769132500001012
应用就被作为目标运行应用,当微信
Figure BDA0002476913250000103
应用被热启动时,终端根据微信
Figure BDA0002476913250000102
应用中发生页异常的内存页,确定微信
Figure BDA00024769132500001013
应用的常用内存页。
本申请实施例中,目标运行应用为可以在前台和后台切换运行的应用。示例性地,以王者荣耀
Figure BDA00024769132500001011
应用程序为例,用户打开手机的王者荣耀
Figure BDA0002476913250000104
应用,正处于对战状态时,如果手机来电,则在用户通话过程中,王者荣耀
Figure BDA0002476913250000107
应用被切换至后台运行,此时王者荣耀
Figure BDA0002476913250000105
应用为目标运行应用。再比如,在微信
Figure BDA0002476913250000108
应用运行的过程中,当用户触控手机的返回(back)键或主菜单(home)键,当前运行的微信
Figure BDA0002476913250000109
应用虽然会被退出,但是该微信
Figure BDA0002476913250000106
应用的进程还是保留在后台运行,这时微信
Figure BDA00024769132500001010
应用为目标运行应用。终端的系统内核可以通过系统中的运行任务(RunningTaskInfo)类或运行应用进程(RunningAppProcessInfo)类判断应用的运行状态,从而确定出处于后台运行的应用。
另外,需要说明的是,被切换至后台运行的应用的进程常常不会被杀掉,而是暂存于内存中等待下次切换至前台使用。一般地,当运行应用从前台运行切换至后台运行时,终端的系统内核会对该运行应用的内存页进解映射、压缩或者执行交换操作等处理,具体地,可以参见如下任意一种可能的方式。
方式A,当目标运行应用从前台运行切换至后台运行时,终端的系统内核通常对该目标运行应用的各个进程的内存页进行压缩,并将压缩后的内存页保留在内存中。这一方式通过对内存页压缩可以有效的提高内存有效容量,降低页故障率,同时可以提高内存带宽使用率。
示例性地,仍以王者荣耀
Figure BDA00024769132500001014
应用程序为例,该应用从首次启动应用到完成游戏对战,实际需要的数据量(内存页数量)约600MB,当王者荣耀
Figure BDA00024769132500001015
应用程序从前台运行切换至后台运行时,手机的系统内核对该应用程序的各个进程的内存页进行压缩,例如,如图5A所示,终端的系统内核可以通过调用lz4等压缩算法对内存中每个运行进程的内存页进行内存页压缩,其中,压缩后的数据仍保留在内存中(示例性地,占用如图5A中的(b)所示的压缩空间),相较于压缩前,压缩后的数据占用的内存空间(即图5A所示的压缩空间)相对较小。
方式B,当目标运行应用从前台运行切换至后台运行时,终端的系统内核通常对该应用程序的各个进程的内存页执行交换操作,即将部分或全部内存页交换至存储器的交换分区,以实现节省内存。
示例性地,仍以王者荣耀
Figure BDA00024769132500001016
应用程序为例,该应用从首次启动应用到完成游戏对战,实际需要的数据量(内存页数量)约600MB,当王者荣耀
Figure BDA00024769132500001017
应用程序从前台运行切换至后台运行时,手机的系统内核对该应用程序的各个进程的内存页执行交换操作,例如,如图5B所示,终端的系统内核对内存中运行进程的部分内存页进行交换(swap),其中,被交换的内存页被迁移至存储器的交换分区中(示例性地,占用如图5B中的(b)所示的存储器的交换分区),以实现节省内存。
方式C,当目标运行应用从前台运行切换至后台运行时,终端的系统内核通常解除该应用程序的各个进程的内存页的映射,即解除物理内存页与虚拟内存页之间的映射。
示例性地,仍以王者荣耀
Figure BDA0002476913250000111
应用程序为例,该应用从首次启动应用到完成游戏对战,实际需要的数据量(内存页数量)约600MB,当王者荣耀
Figure BDA0002476913250000112
应用程序从前台运行切换至后台运行时,手机的系统内核对该应用程序的各个进程的内存页进行解映射。
在本申请实施例中,当目标应用被热启动时,终端的系统内核判断内存页有没有被映射,如果没有被映射,则说明发生缺页异常,因此触发页异常中断程序,页异常中断程序将发生页异常的内存页确定为常用内存页,具体地,可以存在如下三种方式触发页异常中断程序,终端设备可以根据如下三种方式中的任意一种方式确定目标运行应用中发生页异常的内存页。
方式一,假设运行应用从前台运行切换至后台运行时,终端的系统内核会对该运行应用的内存页执行方式A所述的处理,则在目标运行应用热启动时,终端的系统内核对目标运行应用的内存页进行解压缩,因目标运行应用从前台运行切换至后台运行时,目标运行应用的内存页被压缩,所以终端的系统内核判断出被解压的内存页没有被映射,因此会触发页异常中断程序,页异常中断程序将发生页异常的内存页确定为常用内存页,即终端的系统内核将目标运行应用中被解压的内存页,确定目标运行应用的常用内存页。
方式二,假设运行应用从前台运行切换至后台运行时,终端的系统内核会对该运行应用的内存页执行方式B所述的处理,则在目标运行应用热启动时,终端的系统内核对目标运行应用的内存页执行交换操作,即将存储器中的内存页交换至内存,因目标运行应用从前台运行切换至后台运行时,目标运行应用的内存页被交换至存储器,所以终端的系统内核判断出被交换至内存的内存页没有被映射,因此会触发页异常中断程序,页异常中断程序将发生页异常的内存页确定为常用内存页,即终端的系统内核将目标运行应用中被交换至内存的内存页,确定目标运行应用的常用内存页。
方式三,假设运行应用从前台运行切换至后台运行时,终端的系统内核会对该运行应用的内存页执行方式C所述的处理,则在目标运行应用热启动时,终端的系统内核对目标运行应用的内存页重新映射,因目标运行应用从前台运行切换至后台运行时,目标运行应用的内存页被解映射,所以终端的系统内核判断出被交换至内存的内存页没有被映射,因此会触发页异常中断程序,页异常中断程序将发生页异常的内存页确定为常用内存页,即终端的系统内核将目标运行应用中被交换至内存的内存页,确定目标运行应用的常用内存页。
步骤402,在目标运行应用被切换至后台运行后,终端将常用内存页保留在内存中。
具体来说,终端可以通过守护进程监听目标运行应用是否被切换至后台运行,终端的系统内核中可以设有守护进程,终端操作系统的框架层对应用前后台切换信息进行监听,当处于前台运行的应用被切换至后台运行时,框架层向守护进程发送信号,守护进程收到该信号后,对切换至后台运行的目标运行应用进行标记,具体地标记方式可通过在页结构(struct page)中添加变量的方式实现,从而终端可以确定出目标运行应用处于后台运行。进而终端的系统内核将常用内存页保留在内存中。
需要说明的是,一种可能的情况下,目标运行应用切换到后台运行时,终端的系统内核可能会对目标运行应用立即执行内存页交换操作,这时,目标运行应用被切换至后台运行后可以理解为包括目标运行应用开始切换至后台运行的开始时刻,以及开始时刻之后的时段。或者,另一种可能的情况下,目标运行应用切换到后台运行时,终端的系统内核可能隔一段设定时长后才会对目标运行应用执行内存页交换操作,目标运行应用被切换至后台运行后可以理解为与该开始时刻相隔设定时长之后的时段。
步骤403,终端将除了常用内存页之外的内存页,确定为目标运行应用的非常用内存页。
具体地,终端的系统内核对目标运行应用中被解压的内存页进行标记后,将目标运行应用中未被标记的内存页确定为目标运行应用的非常用内存页;或者,终端的系统内核对目标运行应用中被交换至内存的内存页进行标记后,将目标运行应用中未被标记的内存页确定为目标运行应用的非常用内存页;或者,终端的系统内核对目标运行应用中被重新映射的内存页进行标记后,将目标运行应用中未被标记的内存页确定为目标运行应用的非常用内存页。
步骤404,在目标运行应用切换至后台运行后,将目标运行应用的非常用内存页,从内存交换至存储器的交换分区。
换句话说,在目标运行应用切换至后台运行后,终端的系统内核只对非常用内存页执行交换(swap)操作,对常用内存页则不执行交换操作,即将常用内存页保留在内存中。或者说,在目标运行应用切换至后台运行后,终端的系统内核只对非常用内存页执行压缩操作,对常用内存页则不执行压缩操作。再或者,在目标运行应用切换至后台运行后,终端的系统内核只对非常用内存页执行交换和压缩操作,对常用内存页则不执行交换和压缩操作。也就是说,上述步骤中的交换操作可以被替换为交换和压缩操作,或者压缩操作,本申请实施例对此不作限定。
在一种可能的实施例中,若目标运行应用切换至后台运行的运行时长超过第一时长(例如两个小时),终端的系统内核可以对常用内存页执行交换操作,例如,将全部或者部分内存页从内存交换至存储器的交换分区,或者对常用内存页进行压缩操作。
在一种可能的实施例中,该步骤404中,终端的系统内核将目标运行应用的非常用内存页,从所述内存迁移至存储器的交换分区之前,终端的处理器先判断内存的I/O(输入/输出)是否空闲时,若I/O(输入/输出)空闲,终端的系统内核还是会将非常用内存页以压缩的形态存放在内存中。一旦确定I/O空闲,就会将非常用内存页迁移存储器的交换分区中。
在一种可能的实施例中,当目标运行应用的进程被杀掉时,终端的系统内核将常用内存页从内存交换至存储器的交换分区,以实现节省内存。
下文中,进一步结合场景一和场景二对上述内存管理方法的系统过程进行示例说明。
场景一
结合图6,对本申请实施例提供的内存管理方法的流程进行描述。参阅图6所示,该方法具体包括如下步骤。
步骤601,当目标运行应用从前台切换至后台运行时,终端对目标运行应用的内存页进行压缩。
示例性地,仍以王者荣耀
Figure BDA0002476913250000121
应用程序为例,该应用从首次启动应用到完成游戏对战,实际需要的数据量(内存页数量)约600MB,当王者荣耀
Figure BDA0002476913250000122
应用程序从前台运行切换至后台运行时,手机的系统内核对该应用程序的各个进程的内存页进行压缩,例如,如图5A所示,终端的系统内核可以通过调用lz4等压缩算法对内存中每个运行进程的内存页进行内存页压缩,其中,压缩后的数据仍保留在内存中(示例性地,占用如图5A中的(b)所示的压缩空间),相较于压缩前,压缩后的数据占用的内存空间(即图5A所示的压缩空间)相对较小。
步骤602,当目标运行应用被热启动时,终端确定目标运行应用中被解压的内存页。
具体地,在内核中,每个内存页都有对应的数据结构,本申请实施例可以在该数据结构里面增加一项特殊标记位。终端确定被解压的内存页的一种方式可以是:当目标运行应用第一次切到后台运行后,终端的系统内核将该特殊标志位置为0;当应用被热启动时,终端的系统内核将所有被解压的内存页对应的特殊标记位置为1。也就是说,当目标运行应用从后台运行切换至前台运行时,终端的系统内核会对应用启动和使用所需的内存页进行标记。终端设备可以根据该标记信息确定出被解压的内存页。
在另一种可能的实施例中,本申请还可以在每个内存页都有对应的数据结构中另外定义一个属性为枚举值的第一标记位,当目标运行应用每次热启动时,终端的系统内核对被再次解压的内存页对应的该枚举值递增,直至目标运行应用被连续第K+1次热启动后,目标运行应用的内存页的该枚举值被清零。例如,第一标记位的初始值为0,当目标运行应用第一次被热启动时,若第一内存页被从压缩数据中解压出来,则将该内存页对应的第一标记位被置为1;当目标运行应用第二次被热启动时,若第一内存页被从压缩数据中再次解压出来,则将该内存页对应的第一标记位被置为2。终端设备可以将第一标记位为非0对应的内存页,确定为被解压的内存页。
需要说明的是,在实际应用中,应用程序的启动方式包括冷启动和热启动,冷启动为:终端在后台未运行待启动的应用程序的相关进程,因此启动该应用程序时首先创建和初始化Application类,再创建和初始化MainActivity类(包括一系列的测量、布局、绘制等),然后将该应用程序的相关信息输出给用户。热启动为:终端在后台运行了待启动的应用程序的相关进程,因此启动该应用程序时不需要创建和初始化Application类,而是直接创建和初始化MainActivity,然后将该应用程序的相关信息输出该用户。该预设规则还存在其他可能性,此处不再一一举例。
另外,内存页可以包括匿名页、文件页等,在此不做限定。其中,匿名页指没有文件背景的页面,例如堆、栈、数据段等;文件页指有文件背景的页面,程序去读文件后在内存中产生的缓存,文件页也叫文件缓存。需要说明的是,压缩数据中包括目标运行应用的进程运行时产生的匿名内存页和文件内存页等。
在该步骤中,若目标运行应用被热启动后,部分进程会被执行,因此压缩数据中与该进程相关的内存页会被解压。故本申请通过应用的热启动,可以准确无误的主动筛选出应用启动和使用的内存页,相比传统方案中的基于长时间历史使用信息进行冷热页识别,本申请提供的方案更为及时有效。
步骤603,终端将被解压的内存页,确定为目标运行应用的常用内存页。
其中,确定目标运行应用的常用内存页的第一种方法可以是:终端设备将该次热启动被解压的内存页,确定为目标运行应用的常用内存页。
另外,确定目标运行应用的常用内存页的第二种方法可以是:当终端被连续第K次热启动时,终端的系统内核根据内存页的第一标记位的信息,确定被标记次数大于设定阈值的内存页为常用内存页。也就是说,终端的系统内核根据前连续K次热启动时被解压的内存页,确定常用内存页。例如,在目标运行应用第一次被热启动时,第一内存页被从压缩数据中解压出来,第一内存页对应的第一标记位被置为1,接着,在目标运行应用第二次被热启动时,第一内存页被从压缩数据中解压出来,第一内存页对应的第一标记位被置为2,在目标运行应用第三次被热启动时,第一内存页未被从压缩数据中解压出来,假设K被设置为3,设定阈值被设置为1,则终端的系统内核将第一内存页确定为常用内存页。
需要说明的是,当终端设备确定出常用内存页之后,终端的系统内核将该第一标记位清零。接续上例,终端将第一内存页确定为常用内存页之后,终端设备将各个内存页的标记位清零,后续,终端的系统内核继续以前K次连续热启动时被解压的内存页,确定常用内存页。
步骤604,在目标运行应用被切换至后台运行时,终端将常用内存页保留在内存中。
具体地,终端的系统内核将被标记的内存页保留在内存中,或者将第一标记位大于设定阈值的内存页保留在内存中。
步骤605,终端的将除了常用内存页之外的内存页,确定为目标运行应用的非常用内存页,并在目标运行应用被切换至后台运行时,终端将目标运行应用的非常用内存页,从所述内存迁移至存储器的交换分区。
需要说明的是,上述步骤604和步骤605并不存在严格的先后执行顺序,可以先执行步骤604,再执行步骤605,或者先执行步骤605,再执行步骤604。
具体地,该步骤中,终端的系统内核将目标运行应用的非常用内存页,从所述内存迁移至存储器的交换分区之前,终端的处理器先判断内存的I/O(输入/输出)是否空闲时,若I/O(输入/输出)空闲,终端的系统内核还是会将非常用内存页以压缩的形态存放在内存中。一旦确定I/O空闲,就会将非常用内存页迁移存储器的交换分区中。
下面结合图7对上述内存管理方法进行举例说明,示例性地,如图7所示,在应用热启动时,终端的系统内核对压缩数据中的内存页进行解压,解压出来的内存页如图7中的(b)所示,终端的系统内核确定被解压出来的内存页为常用内存页,并将压缩空间中剩余的内存页确定为非常用内存页,如图7中的(c)所示。进一步地,在I/O空闲时,终端的系统内核将非常用内存页迁移至如图7中的(d)所示的存储器的交换分区中。
在本申请实施例中,该方法实现的前提条件是:被切换至后台的目标运行应用在切换至后台的过程中执行了内存压缩操作,以节省内存页的内存消耗,上述方法中,依据应用热启动时,部分应用启动和使用的内存页被解压的特点,可以准确地确定出应用启动和使用所需要的常用内存页,终端的系统内核将应用启动和使用需要的内存页保留在内存,从而改善后台运行的应用再次被启动时出现卡顿的问题,提高应用的保活性能,另一方面,该方法可以准确地筛选出需要迁移至交换分区的非常用内存页,终端将非常用内存页迁移至存储器的交换分区,以节省内存资源,交换分区还保证了该目标运行应用程序的进程运行时产生的数据不丢失。
场景二
下面结合图8,对本申请实施例提供的内存管理方法的流程进行描述。参阅图8所示,该方法具体包括如下步骤。
步骤801,当目标运行应用从前台切换至后台运行时,终端对目标运行应用的内存页进行解映射或进行交换操作。
具体示例可以参见上述步骤401,在此不再重复赘述。
步骤802,当目标运行应用被热启动时,终端确定目标运行应用中被换入内存的内存页,或者终端确定目标应用中被重新映射的内存页。
具体的,在内核中,每个页都有对应的数据结构,本申请实施例可以在该数据结构里面增加一项特殊标记位。终端确定进程运行时所使用的内存页的一种方式可以是:当应用第一次切到后台运行后,终端的系统内核将该特殊标志位置为0;当应用被热启动时,终端的系统内核将所有使用到的内存页的该特殊标记位置为1。也就是说,当目标运行应用从后台运行切换至前台运行时,终端的系统内核会对应用启动和使用所需的内存页进行标记。终端设备可以根据该标记信息确定出进程运行时所使用的内存页。
在另一种可能的实施例中,本申请还可以在每个内存页都有对应的数据结构中另外定义一个属性为枚举值的第一标记位,当目标运行应用每次热启动时,终端的系统内核对被再次使用的内存页对应的该枚举值递增,直至目标运行应用被连续第K+1次热启动后,目标运行应用的内存页的该枚举值被清零。例如,第一标记位的初始值为0,当目标运行应用第一次被热启动时,若第一内存页被使用,则将该内存页对应的第一标记位被置为1;当目标运行应用第二次被热启动时,若第一内存页再次被使用,则将该内存页对应的第一标记位被置为2。终端设备可以将第一标记位为非0对应的内存页,确定为进程所使用的内存页。
其中,应用的热启动、应用的冷启动,以及内存页的具体说明可以参见上述步骤603,在此不再重复赘述。
步骤803,终端将进程运行时被换入至内存的内存页或被重新映射的内存页,确定为目标运行应用的常用内存页。
其中,确定目标运行应用的常用内存页的第一种方法可以是:终端设备将该次热启动进程运行被换入至内存的内存页或被重新映射的内存页,确定为目标运行应用的常用内存页。
另外,确定目标运行应用的常用内存页的第二种方法可以是:当终端被连续第K次热启动时,终端的系统内核根据内存页的第一标记位的信息,确定被标记次数大于设定阈值的内存页为常用内存页。也就是说,终端的系统内核根据前连续K次热启动时被换入内存的内存页或者被重新映射的内存页,确定常用内存页。例如,在目标运行应用第一次被热启动时,第一内存页被使用,第一内存页对应的第一标记位被置为1,接着,在目标运行应用第二次被热启动时,第一内存页被使用,第一内存页对应的第一标记位被置为2,在目标运行应用第三次被热启动时,第一内存页未被使用,假设K被设置为3,设定阈值被设置为1,则终端的系统内核将第一内存页确定为常用内存页。
需要说明的是,当终端设备确定出常用内存页之后,终端的系统内核将该第一标记位清零。接续上例,终端将第一内存页确定为常用内存页之后,终端设备将各个内存页的标记位清零,后续,终端的系统内核继续以前K次连续热启动时被使用的内存页,确定常用内存页。
步骤804,在目标运行应用被切换至后台运行时,终端将所述常用内存页保留在内存中。
具体地,终端的系统内核将被标记的内存页保留在内存中,或者将第一标记位大于设定阈值的内存页保留在内存中。
步骤805,终端将除了常用内存页之外的内存页,确定为目标运行应用的非常用内存页,并在目标运行应用被切换至后台运行时,终端将目标运行应用的非常用内存页,从所述内存迁移至存储器的交换分区。
需要说明的是,上述步骤804和步骤805并不存在严格的先后执行顺序,可以先执行步骤804,再执行步骤805,或者先执行步骤805,再执行步骤804。
具体地,该步骤中,终端的系统内核将目标运行应用的非常用内存页,从所述内存迁移至存储器的交换分区之前,终端的处理器先判断内存的I/O(输入/输出)是否空闲时,若I/O(输入/输出)空闲,终端的系统内核还是会将非常用内存页以压缩的形态存放在内存中。一旦确定I/O空闲,就会将非常用内存页迁移存储器的交换分区中。
在本申请实施例中,该方法中并不限定目标运行应用在切换至后台应用时需要执行压缩操作,终端的系统内核通过判断内存页是否被使用,可以准确地确定出应用启动和使用所需要的常用内存页和非常用内存页,实现方式较为灵活。终端的系统内核将应用启动和使用需要的内存页保留在内存,从而改善后台运行的应用再次被启动时出现卡顿的问题,提高应用的保活性能,另一方面,该方法可以准确地筛选出需要迁移至交换分区的非常用内存页,终端将非常用内存页迁移至存储器的交换分区,以节省内存资源,交换分区还保证了该目标运行应用程序的进程运行时产生的数据不丢失。
需要说明的是,上述实施例所提供的方法可以与目前存在的内存复用技术相结合,例如目前存在的内存复用技术有内存去重、ballooning(气球)技术、transcendentmemory(超越记忆)技术以及SWAP(交换)技术等,本申请实施例对此并不作限定。
基于以上实施例,本申请实施例提供了一种内存管理装置,该装置应用于终端设备中,用于实现如图4所示的内存管理方法,参阅图9所示,所述装置900包括:确定单元901和处理单元902,其中,
确定单元901,用于当目标运行应用被热启动时,根据所述目标运行应用中发生页异常的内存页,确定所述目标运行应用的常用内存页;
处理单元902,用于在所述目标运行应用切换至后台运行后,将所述常用内存页保留在内存中,以及将非常用内存页从内存交换至存储器的交换分区。
在一种可能的设计中,确定单元901,用于将处于后台运行的应用确定为目标应用,或者确定单元901,用于根据用户设置的应用的标识,确定目标运行应用。
在一种可能的设计中,目标运行应用被热启动指的是目标运行应用从后台运行切换至前台运行,目标运行应用热启动对应的起始时刻可以是目标运行应用的进程从后台运行开始切换至前台运行的第一时刻,确定单元901,用于将第一时刻之后的第二时长对应的时间段作为热启动过程对应的时间段,第二时长可以是设定阈值,也可以是根据目标运行应用的状态信息确定的。
在一种可能的实现方式中,在所述目标运行应用被解压缩时,将所述目标运行应用中被解压的内存页,确定为所述目标运行应用的常用内存页。
在一种可能的实现方式中,在所述目标运行应用中的内存页被执行交换操作时,将所述目标运行应用中被交换至内存的内存页,确定为所述目标运行应用的常用内存页。
在一种可能的实现方式中,在所述目标运行应用中的内存页被重新映射时,将所述目标运行应用中被重新映射的内存页,确定为所述目标运行应用的常用内存页。
在另一种可能的实现方式中,当目标运行应用每次被热启动时,处理单元902对所述目标运行应用中被解压的内存页进行标记,将被标记的内存页确定为所述目标运行应用的常用内存页;或者,对所述目标运行应用中被交换至内存的内存页进行标记,将被标记的内存页确定为所述目标运行应用的常用内存页;或者,对所述目标运行应用中被重新映射的内存页进行标记,将被标记的内存页确定为所述目标运行应用的常用内存页。
在一种可能的实现方式中,处理单元902具体用于:对目标运行应用的内存页执行交换操作;当目标运行应用的内存页为常用内存页时,将常用内存页保留在内存中;当目标运行应用的内存页为非常用内存页时,将非常用内存页从内存交换至存储器的交换分区。
在一种可能的实现方式中,处理单元902还用于:在目标运行应用切换至后台运行的运行时长达到第一时长后,将常用内存页从内存交换至存储器的交换分区。
在一种可能的实现方式中,处理单元902确定内存的I/O空闲时,才将目标运行应用的非常用内存页,从内存迁移至存储器的交换分区,否则,则将非常用内存页保留在内存中。
在一种可能的实现方式,当目标运行应用的进程被杀掉时,处理单元902将所述常用内存页从所述内存交换至存储器的交换分区。
采用本发明实施例提供的内存管理装置,依据应用热启动时,部分应用启动和使用的内存页出现缺页异常的特点,可以准确地确定出应用启动和使用所需要的常用内存页,终端的系统内核将应用启动和使用需要的内存页保留在内存,从而改善后台运行的应用再次被启动时出现卡顿的问题,提高应用的保活性能,另一方面,该方法可以准确地筛选出需要迁移至交换分区的非常用内存页,终端将非常用内存页迁移至存储器的交换分区,以节省内存资源,交换分区还保证了该目标运行应用程序的进程运行时产生的数据不丢失。
需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。在本申请的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
基于以上实施例,本发明实施例还提供了一种终端设备,用于实现如图4、图6或图8所示的内存管理方法,且具有如图9所示的内存管理装置900的功能,参阅图10所示,所述终端设备1000中包括:收发器1001、处理器1002、总线1003、存储器1004,其中,
所述收发器1001和所述处理器1002、所述存储器1004、通过所述总线1003相互连接,所述总线1003可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图10中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
所述收发器1001,用于与其他设备进行通信交互。
所述处理器1002,用于实现如图4所示的内存管理方法或,如图6所示的内存管理方法,或如图8所示的内存管理方法。
在本申请实施例中,该方法中并不限定目标运行应用在切换至后台应用时需要执行压缩操作,终端的系统内核通过判断内存页是否被使用,可以准确地确定出应用启动和使用所需要的常用内存页和非常用内存页,实现方式较为灵活。终端的系统内核将应用启动和使用需要的内存页保留在内存,从而改善后台运行的应用再次被启动时出现卡顿的问题,提高应用的保活性能,另一方面,该方法可以准确地筛选出需要迁移至交换分区的非常用内存页,终端将非常用内存页迁移至存储器的交换分区,以节省内存资源,交换分区还保证了该目标运行应用程序的进程运行时产生的数据不丢失。
本申请实施例还提供一种计算机存储介质,该计算机存储介质中存储有计算机指令,当该计算机指令在终端设备上运行时,使得终端设备执行上述相关方法步骤实现上述实施例中的方法。
本申请实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的方法。
另外,本申请的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中的方法。
通过以上实施方式的描述,所属领域的技术人员可以了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其他的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以丢弃,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其他的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (25)

1.一种内存管理方法,应用于终端,其特征在于,包括:
当目标运行应用被热启动时,根据所述目标运行应用中发生页异常的内存页,确定所述目标运行应用的常用内存页;
在所述目标运行应用切换至后台运行后,将所述常用内存页保留在内存中,以及将非常用内存页从内存交换至存储器的交换分区,所述非常用内存页为除了所述常用内存页之外的内存页。
2.根据权利要求1所述的方法,其特征在于,根据所述目标运行应用中发生页异常的内存页,确定所述目标运行应用的常用内存页,包括:
在所述目标运行应用被解压缩时,将所述目标运行应用中被解压的内存页,确定为所述目标运行应用的常用内存页;
或者,在所述目标运行应用中的内存页被执行交换操作时,将所述目标运行应用中被交换至内存的内存页,确定为所述目标运行应用的常用内存页;
或者,在所述目标运行应用中的内存页被重新映射时,将所述目标运行应用中被重新映射的内存页,确定为所述目标运行应用的常用内存页。
3.根据权利要求1或2所述的方法,其特征在于,所述确定所述目标运行应用的常用内存页,包括:
对所述目标运行应用中被解压的内存页进行标记,将被标记的内存页确定为所述目标运行应用的常用内存页;
或者,对所述目标运行应用中被交换至内存的内存页进行标记,将被标记的内存页确定为所述目标运行应用的常用内存页;
或者,对所述目标运行应用中被重新映射的内存页进行标记,将被标记的内存页确定为所述目标运行应用的常用内存页。
4.根据权利要求1至3任一项所述的方法,其特征在于,将所述常用内存页保留在内存中,以及将非常用内存页从内存交换至存储器的交换分区,包括:
对所述目标运行应用的内存页执行交换操作;
当所述目标运行应用的内存页为所述常用内存页时,将所述常用内存页保留在内存中;
当所述目标运行应用的内存页为所述非常用内存页时,将所述非常用内存页从内存交换至存储器的交换分区。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述方法还包括:
在所述目标运行应用切换至后台运行的运行时长达到第一时长后,将所述常用内存页从内存交换至存储器的交换分区。
6.根据权利要求1至5任一项所述的方法,其特征在于,将非常用内存页从内存交换至存储器的交换分区,包括:
确定所述内存的输入输出I/O是否空闲;
在所述内存的I/O空闲时,将所述非常用内存页从所述内存交换至存储器的交换分区。
7.根据权利要求1至6任一项所述的方法,其特征在于,所述终端根据所述目标运行应用中发生页异常的内存页,确定所述目标运行应用的常用内存页之前,还包括:
在所述目标运行应用被切换至后台运行时,所述终端对所述目标运行应用中的内存页进行压缩;
或者,在所述目标运行应用被切换至后台运行时,所述终端对所述目标运行应用中的内存页执行交换操作;
或者,在所述目标运行应用被切换至后台运行时,所述终端对所述目标运行应用中的内存页进行重新映射。
8.根据权利要求1至7任一项所述的方法,其特征在于,还包括:
确定处于后台运行的应用为目标运行应用;
或者,根据用户设置的应用的标识,确定目标运行应用。
9.根据权利要求1至8任一项所述的方法,其特征在于,还包括:
所述目标运行应用被热启动指的是所述目标运行应用从后台运行时切换至前台运行。
10.根据权利要求1至9任一项所述的方法,其特征在于,当目标运行应用被热启动时包括:
确定所述目标运行应用的进程从后台运行开始切换至前台运行的第一时刻,在所述第一时刻之后的第二时长对应的时间段内;
其中,所述第二时长为设定阈值,或者所述第二时长是根据所述目标运行应用的状态信息确定的。
11.根据权利要求1至10任一项所述的方法,其特征在于,还包括:
当目标运行应用的进程被杀掉时,将所述常用内存页从所述内存交换至存储器的交换分区。
12.一种内存管理装置,其特征在于,包括:
确定单元,用于当目标运行应用被热启动时,根据所述目标运行应用中发生页异常的内存页,确定所述目标运行应用的常用内存页;
处理单元,用于在所述目标运行应用切换至后台运行后,将所述常用内存页保留在内存中,以及将非常用内存页从内存交换至存储器的交换分区。
13.根据权利要求12所述的装置,其特征在于,所述确定单元具体用于:
在所述目标运行应用被解压缩时,将所述目标运行应用中被解压的内存页,确定为所述目标运行应用的常用内存页;
或者,在所述目标运行应用中的内存页被执行交换操作时,将所述目标运行应用中被交换至内存的内存页,确定为所述目标运行应用的常用内存页;
或者,在所述目标运行应用中的内存页被重新映射时,将所述目标运行应用中被重新映射的内存页,确定为所述目标运行应用的常用内存页。
14.根据权利要求12或13所述的装置,其特征在于,所述确定单元具体用于:
对所述目标运行应用中被解压的内存页进行标记,将被标记的内存页确定为所述目标运行应用的常用内存页;
或者,对所述目标运行应用中被交换至内存的内存页进行标记,将被标记的内存页确定为所述目标运行应用的常用内存页;
或者,对所述目标运行应用中被重新映射的内存页进行标记,将被标记的内存页确定为所述目标运行应用的常用内存页。
15.根据权利要求12至14任一项所述的装置,其特征在于,所述处理单元在所述目标运行应用切换至后台运行后,具体用于:
对所述目标运行应用的内存页执行交换操作;
当所述目标运行应用的内存页为所述常用内存页时,将所述常用内存页保留在内存中;
当所述目标运行应用的内存页为所述非常用内存页时,将所述非常用内存页从内存交换至存储器的交换分区。
16.根据权利要求12至15任一项所述的装置,其特征在于,所述处理单元还用于:
在所述目标运行应用切换至后台运行的运行时长达到第一时长后,将所述常用内存页从内存交换至存储器的交换分区。
17.根据权利要求12至16任一项所述的装置,其特征在于,所述处理单元具体用于:
确定所述内存的输入输出I/O是否空闲;
在所述内存的I/O空闲时,将所述非常用内存页从所述内存交换至存储器的交换分区。
18.根据权利要求12至17任一项所述的装置,其特征在于,在所述确定单元根据所述目标运行应用中发生页异常的内存页,确定所述目标运行应用的常用内存页之前,所述处理单元还用于:
在所述目标运行应用被切换至后台运行时,所述终端对所述目标运行应用中的内存页进行压缩;
或者,在所述目标运行应用被切换至后台运行时,所述终端对所述目标运行应用中的内存页执行交换操作;
或者,在所述目标运行应用被切换至后台运行时,所述终端对所述目标运行应用中的内存页进行重新映射。
19.根据权利要求12至18任一项所述的装置,其特征在于,所述确定单元还用于:
确定处于后台运行的应用为目标运行应用;
或者,根据用户设置的应用的标识,确定目标运行应用。
20.根据权利要求12至19任一项所述的装置,其特征在于,还包括:
所述目标运行应用被热启动指的是所述目标运行应用从后台运行时切换至前台运行。
21.根据权利要求12至20任一项所述的装置,其特征在于,所述确定单元具体用于:
确定所述目标运行应用的进程从后台运行开始切换至前台运行的第一时刻,在所述第一时刻之后的第二时长对应的时间段内,根据所述目标运行应用中发生页异常的内存页,确定所述目标运行应用的常用内存页;
其中,所述第二时长为设定阈值,或者所述第二时长是根据所述目标运行应用的状态信息确定的。
22.根据权利要求12至21任一项所述的装置,其特征在于,所述处理单元还用于
当目标运行应用的进程被杀掉时,将所述常用内存页从所述内存交换至存储器的交换分区。
23.一种终端,其特征在于,所述终端包括显示屏、处理器和存储器;
所述存储器存储有程序指令;
所述处理器用于运行所述存储器存储的所述程序指令,使得所述终端执行如权利要求1至11任一项所述的方法。
24.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括程序指令,当所述程序指令在处理器上运行时,使得所述处理器执行如权利要求1至11任一项所述的方法。
25.一种芯片,其特征在于,所述芯片与存储器耦合,用于执行所述存储器中存储的计算机程序,以执行如权利要求1至11任一项所述的方法。
CN202010367180.2A 2020-04-30 2020-04-30 一种内存管理方法及终端设备 Active CN113590500B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN202010367180.2A CN113590500B (zh) 2020-04-30 2020-04-30 一种内存管理方法及终端设备
EP21797009.4A EP4131012B1 (en) 2020-04-30 2021-03-03 Memory management method and terminal device
PCT/CN2021/078938 WO2021218370A1 (zh) 2020-04-30 2021-03-03 一种内存管理方法及终端设备
US17/920,513 US12086069B2 (en) 2020-04-30 2021-03-03 Memory management method to determine a frequently accessed page and associated terminal device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010367180.2A CN113590500B (zh) 2020-04-30 2020-04-30 一种内存管理方法及终端设备

Publications (2)

Publication Number Publication Date
CN113590500A true CN113590500A (zh) 2021-11-02
CN113590500B CN113590500B (zh) 2024-10-11

Family

ID=78237016

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010367180.2A Active CN113590500B (zh) 2020-04-30 2020-04-30 一种内存管理方法及终端设备

Country Status (4)

Country Link
US (1) US12086069B2 (zh)
EP (1) EP4131012B1 (zh)
CN (1) CN113590500B (zh)
WO (1) WO2021218370A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115858046A (zh) * 2023-02-28 2023-03-28 荣耀终端有限公司 一种预加载内存页的方法、电子设备及芯片系统
CN116266159A (zh) * 2021-12-17 2023-06-20 华为技术有限公司 一种缺页异常处理方法和电子设备
CN117519959A (zh) * 2022-07-30 2024-02-06 华为技术有限公司 内存管理方法及电子设备

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11861395B2 (en) * 2020-12-11 2024-01-02 Samsung Electronics Co., Ltd. Method and system for managing memory for applications in a computing system

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020147893A1 (en) * 2001-04-09 2002-10-10 Sumit Roy Virtual memory system utilizing data compression implemented through a device
CN104346284A (zh) * 2013-08-02 2015-02-11 华为技术有限公司 一种内存管理方法及内存管理设备
CN106843450A (zh) * 2017-01-23 2017-06-13 努比亚技术有限公司 一种终端应用的存储处理方法和装置
US20190179662A1 (en) * 2016-08-17 2019-06-13 Huawei Technologies Co.,Ltd. Application start method and apparatus

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6910106B2 (en) * 2002-10-04 2005-06-21 Microsoft Corporation Methods and mechanisms for proactive memory management
US8886976B2 (en) * 2011-04-11 2014-11-11 Microsoft Corporation Management of background tasks
US10565099B2 (en) * 2012-12-28 2020-02-18 Apple Inc. Methods and apparatus for compressed and compacted virtual memory
CN103970256B (zh) 2014-04-22 2017-02-15 中国科学院计算技术研究所 一种基于内存压缩和cpu动态调频的节能方法及系统
CN105335306B (zh) 2014-06-30 2018-02-13 华为技术有限公司 一种内存控制方法和装置
CN104503740A (zh) * 2014-12-01 2015-04-08 小米科技有限责任公司 内存管理方法和装置
CN105988875B (zh) 2015-03-04 2020-08-14 华为技术有限公司 一种运行进程的方法及装置
CN105701025B (zh) 2015-12-31 2019-07-23 华为技术有限公司 一种内存回收方法及装置
CN105808447B (zh) 2016-03-29 2019-01-29 海信集团有限公司 一种终端设备的内存回收方法和装置
US20180063670A1 (en) * 2016-08-26 2018-03-01 Microsoft Technology Licensing, Llc Background management of mobile applications
CN109213539B (zh) 2016-09-27 2021-10-26 华为技术有限公司 一种内存回收方法及装置
JP2018063505A (ja) 2016-10-12 2018-04-19 富士通株式会社 メモリ管理制御装置、メモリ管理制御方法、及びメモリ管理制御プログラム
CN106557436A (zh) 2016-11-17 2017-04-05 乐视控股(北京)有限公司 终端的内存压缩功能使能方法及装置
CN106776038B (zh) 2016-12-30 2019-12-27 Oppo广东移动通信有限公司 一种热门应用资源分配方法及移动终端
CN106980541B (zh) 2017-03-10 2019-11-19 浙江大学 一种大页内存压缩回收系统及方法
CN106951291A (zh) 2017-03-28 2017-07-14 努比亚技术有限公司 应用程序加速启动方法及装置
CN108804207A (zh) 2017-04-28 2018-11-13 珠海全志科技股份有限公司 一种基于Android系统的进程管控方法
CN108205473B (zh) 2017-08-21 2022-02-08 珠海市魅族科技有限公司 内存处理方法及装置、计算机装置及计算机可读存储介质
CN108089998A (zh) 2017-12-13 2018-05-29 郑州云海信息技术有限公司 一种Linux分页替换方法及系统
CN109992523B (zh) * 2017-12-29 2021-06-01 Oppo广东移动通信有限公司 内存处理方法和装置、电子设备、计算机可读存储介质
CN108932140A (zh) 2018-07-13 2018-12-04 重庆邮电大学 基于安卓用户行为习惯的清理后台应用程序的方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020147893A1 (en) * 2001-04-09 2002-10-10 Sumit Roy Virtual memory system utilizing data compression implemented through a device
CN104346284A (zh) * 2013-08-02 2015-02-11 华为技术有限公司 一种内存管理方法及内存管理设备
US20190179662A1 (en) * 2016-08-17 2019-06-13 Huawei Technologies Co.,Ltd. Application start method and apparatus
CN106843450A (zh) * 2017-01-23 2017-06-13 努比亚技术有限公司 一种终端应用的存储处理方法和装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
刘生平, 吴邦欲, 林国恩: "桌面Linux内存管理算法改进", 系统工程与电子技术, no. 03, 20 March 2005 (2005-03-20) *
陈昊罡;汪小林;王振林;张彬彬;罗英伟;李晓明;: "DMM:虚拟机的动态内存映射模型", 中国科学:信息科学, no. 12, 15 December 2010 (2010-12-15) *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116266159A (zh) * 2021-12-17 2023-06-20 华为技术有限公司 一种缺页异常处理方法和电子设备
CN117519959A (zh) * 2022-07-30 2024-02-06 华为技术有限公司 内存管理方法及电子设备
CN115858046A (zh) * 2023-02-28 2023-03-28 荣耀终端有限公司 一种预加载内存页的方法、电子设备及芯片系统

Also Published As

Publication number Publication date
WO2021218370A1 (zh) 2021-11-04
US12086069B2 (en) 2024-09-10
US20230153246A1 (en) 2023-05-18
EP4131012A1 (en) 2023-02-08
EP4131012B1 (en) 2024-05-08
EP4131012C0 (en) 2024-05-08
CN113590500B (zh) 2024-10-11
EP4131012A4 (en) 2023-09-27

Similar Documents

Publication Publication Date Title
CN113590500B (zh) 一种内存管理方法及终端设备
CN106648496B (zh) 电子设备及用于控制电子设备的显示器的方法
CN111381996B (zh) 内存异常处理方法及装置
WO2023202429A1 (zh) 垃圾回收的方法及电子设备
CN115794361A (zh) 管理内存的方法和电子设备
CN113495744B (zh) 一种版本升级方法及相关装置
CN115016631B (zh) 进程调度方法和终端设备
WO2023185684A1 (zh) 一种应用程序的进程查杀方法及电子设备
CN112783418B (zh) 一种存储应用程序数据的方法及移动终端
CN117130516B (zh) 一种显示方法及电子设备
CN116916093A (zh) 识别卡顿的方法、电子设备及存储介质
KR20180014607A (ko) 이미지 합성 및 복원하는 전자 장치 및 방법
CN113760191B (zh) 数据读取方法、装置、存储介质和程序产品
CN116257235B (zh) 绘制方法及电子设备
CN113760192B (zh) 数据读取方法、装置、存储介质和程序产品
CN116700855B (zh) 一种界面显示方法及电子设备
CN117130766B (zh) 一种线程处理方法及电子设备
US20240357705A1 (en) Cellular network control method and electronic device
WO2022222956A1 (zh) I/o请求转发方法及装置
CN117130947B (zh) 一种内存管理方法及电子设备
CN116450363B (zh) 一种资源调度方法及电子设备
WO2024131481A1 (zh) 一种界面渲染方法及电子设备
CN118550617A (zh) 一种电子设备的显示方法、电子设备及存储介质
CN118426888A (zh) 一种显示控制方法及电子设备
CN118113180A (zh) 一种应用界面分栏显示方法及电子设备

Legal Events

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