CN107912063B - 一种内存回收方法及装置 - Google Patents
一种内存回收方法及装置 Download PDFInfo
- Publication number
- CN107912063B CN107912063B CN201680014809.7A CN201680014809A CN107912063B CN 107912063 B CN107912063 B CN 107912063B CN 201680014809 A CN201680014809 A CN 201680014809A CN 107912063 B CN107912063 B CN 107912063B
- Authority
- CN
- China
- Prior art keywords
- memory
- address space
- virtual address
- application program
- application
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/122—Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/508—Monitor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/17—Embedded application
- G06F2212/171—Portable consumer electronics, e.g. mobile phone
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Stored Programmes (AREA)
- Memory System (AREA)
Abstract
一种内存回收方法及装置,用以解决通过结束KILL应用来回收内存的方式会导致应用数据丢失、应用重新启动变慢的问题。本申请提供的内存回收方法包括:确定待回收内存的应用程序;根据应用程序的运行状态,选择至少一种虚拟地址空间段;对选择的所述至少一种虚拟地址空间段中被所述应用程序占用的虚拟地址空间进行回收。本申请并不直接KILL应用程序,而是根据应用程序的运行状态,只对在该运行状态下能够清理的应用数据所占用的内存进行回收,可以减少应用数据的丢失,提高应用程序重新启动时的速度。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种内存回收方法及装置。
背景技术
内存是计算机或者其它智能终端,如手机等终端中重要的组成部分。终端中应用程序的运行一般都是在内存中进行,很多应用程序使用的数据需要存储在内存中。
在对应用程序进行内存回收时,有的机制采用的是基于需求(on-demand)的内存回收方式,也即当有新的应用启动、并发现内存不足时,再选择结束(KILL)某些后台运行的应用程序,对该应用程序占用的内存进行清理。有的机制采用的是预先清理的方式,也即为了使系统内利用率较低的内存得到及时释放,在发现内存不足之前,就根据应用程序的优先级,KILL掉某些低优先级的应用程序。
不管是基于需求的内存回收机制,还是预先清理的内存回收机制,在回收内存时都是采用的直接KILL应用程序的方式,这种方式对应用程序占用的内存进行完全的清理,因此会导致应用数据的丢失,此外,当用户重新启动应用程序时,启动速度会变慢。
发明内容
本申请实施例提供一种内存回收方法及装置,用以减少回收内存时对应用数据的丢失、提高应用重新启动时的速度。
本申请实施例提供一种内存回收方法,包括:
确定待回收内存的应用程序;
根据所述应用程序的运行状态,在所述应用程序占用的多种虚拟地址空间段中,选择至少一种虚拟地址空间段;
对选择的所述至少一种虚拟地址空间段中被所述应用程序占用的虚拟地址空间进行回收。
上述方法在进行内存回收时,并不直接结束KILL应用程序,而是根据应用程序的运行状态,只对在该运行状态下能够清理的虚拟地址空间进行回收。这样,在某些运行状态(除空进程状态之外的运行状态)下就可以不对整个应用程序占用的内存空间进行完全的清理,可以减少应用数据的丢失,此外,还可以提高应用程序重新启动时的速度。
在上述方法中,确定待回收内存的应用程序,包括:
根据终端内各个应用程序的运行状态,确定待回收内存的应用程序。
在上述方法中,根据所述应用程序的运行状态,在所述应用程序占用的多种虚拟地址空间段中,选择至少一种虚拟地址空间段,包括:
根据在所述运行状态下,能够回收的各种虚拟地址空间段分别对应的回收优先级,选择所述至少一种虚拟地址空间段。
对应内存回收,本申请还提供了内存分配方式:
根据待分配内存的应用数据所属的第一数据类型,从预设的多种虚拟地址空间段中选择一种虚拟地址空间段,并为所述应用数据分配选择的虚拟地址空间段中的虚拟地址空间;其中,所述应用数据所属的第一数据类型对应一个预设的访问频率范围。
采用这种内存分配机制,可以将应用数据按数据类型分配到对应的虚拟地址空间段中,这样,在回收内存时,就可以按照应用程序的运行状态,选择能够回收的数据类型对应的虚拟地址空间段中的内存空间,实现对应用程序占用的内存的选择性回收。
在上述方法中,所述待分配内存的应用数据类型还包括第二数据类型,所述第二数据类型的访问频率范围不同于所述第一数据类型的访问频率范围。
在上述方法中,根据以下步骤确定所述应用数据所属的第一数据类型:
根据监测到的所述应用数据在内存中被访问的频率,以及预设的多个访问频率范围,确定所述应用数据对应的访问频率范围;
根据所述应用数据对应的访问频率范围,确定所述应用数据所属的第一数据类型。
基于本申请实施例新定义的对应预设的访问频率范围的数据类型,可以将访问频率较低的应用数据区分出来,在进行内存回收时,优先回收这类访问频率较低的应用数据,从而实现内存回收的优化处理,提升用户体验。
本申请实施例提供一种内存回收装置,包括:
确定模块,用于确定待回收内存的应用程序;
选择模块,用于根据所述确定模块确定的应用程序的运行状态,在所述应用程序占用的多种虚拟地址空间段中,选择至少一种虚拟地址空间段;
内存回收模块,用于对选择模块选择的所述至少一种虚拟地址空间段中被所述应用程序占用的虚拟地址空间进行回收。
上述装置在进行内存回收时,并不直接结束KILL应用程序,而是根据应用程序的运行状态,只对在该运行状态下能够清理的虚拟地址空间进行回收。这样,在某些运行状态(除空进程状态之外的运行状态)下就可以不对整个应用程序占用的内存进行完全的清理,可以减少应用数据的丢失,此外,还可以提高应用程序重新启动时的速度。
在上述装置中,确定模块具体用于:
根据终端内各个应用程序的运行状态,确定待回收内存的应用程序。
上述所述选择模块具体用于:
根据在所述运行状态下能够回收的各种虚拟地址空间段分别对应的回收优先级,选择所述至少一种虚拟地址空间段。
在上述装置还包括:
内存分配模块,用于根据待分配内存的应用数据所属的第一数据类型,从预设的多种虚拟地址空间段中选择一种虚拟地址空间段,并为所述应用数据分配选择的虚拟地址空间段中的虚拟地址空间;其中,所述应用数据所属的第一数据类型对应一个预设的访问频率范围。
上述装置中,待分配内存的应用数据类型还包括第二数据类型,所述第二数据类型的访问频率范围不同于所述第一数据类型的访问频率范围。
上述内存分配模块具体用于根据以下步骤确定所述应用数据所属的第一数据类型:
根据监测到的所述应用数据在内存中被访问的频率,以及预设的多个访问频率范围,确定所述应用数据对应的访问频率范围;根据所述应用数据对应的访问频率范围,确定所述应用数据所属的第一数据类型。
采用这种内存分配机制,可以将应用数据按数据类型分配到对应的虚拟地址空间段中,这样,在回收内存时,就可以按照应用程序的运行状态,选择能够回收的数据类型对应的虚拟地址空间段中的内存空间,实现对应用程序占用的内存的选择性回收。
基于本申请实施例新定义的应用数据的数据类型,可以将访问频率较低的应用数据区分出来,在进行内存回收时,优先回收这类应用数据,从而实现内存回收的优化处理,提升用户体验。
本申请提供的一种终端,包括:处理器、存储器、和通信总线,通信总线用于实现这些组件之间的连接通信,存储器包括内存和外部存储器,这里的内存也称内存储器,用于暂时存放处理器中的运算数据,以及与硬盘等外部存储器交换的数据,处理器通过内存与外部存储器进行数据交换。
存储器中存储了如下的元素,可执行模块或者数据结果,或者他们的子集,或者他们的扩展集:
操作系统,包含各种系统程序,可以具有内核态和用户态两种运行级别。当一个进程执行系统调用而陷入内核代码中执行时,称其处于内核运行态,简称内核态。当进程处于内核态时,执行的内核代码会使用当前进程的内核栈,每个进程都有自己的内核栈。当进程在执行用户自己的代码时,称其处于用户运行态,简称用户态,此时处理器在特权级最低的用户代码中运行。
应用程序模块,包含各种应用程序。
在本申请实施例中,通过调用存储器存储的程序或指令,处理器执行:
确定待回收内存的应用程序;
根据所述应用程序的运行状态,在所述应用程序占用的多种虚拟地址空间段中,选择至少一种虚拟地址空间段;
对选择的所述至少一种虚拟地址空间段中被所述应用程序占用的虚拟地址空间进行回收。
上述设备在进行内存回收时,并不直接结束KILL应用程序,而是根据应用程序的运行状态,只对在该运行状态下能够清理的虚拟地址空间进行回收。这样,在某些运行状态(除空进程状态之外的运行状态)下就可以不对整个应用程序占用的内存进行完全的清理,可以减少应用数据的丢失,此外,还可以提高应用程序重新启动时的速度。
在上述设备中,处理器具体用于:
根据终端内各个应用程序的运行状态,确定待回收内存的应用程序。
在上述设备中,处理器具体用于:
根据在所述运行状态下,能够回收的各种虚拟地址空间段分别对应的回收优先级,选择所述至少一种虚拟地址空间段。
另外,对应内存回收,处理器可以基于以下机制进行内存分配:
根据待分配内存的应用数据所属的第一数据类型,从预设的多种虚拟地址空间段中选择一种虚拟地址空间段,并为所述应用数据分配选择的虚拟地址空间段中的虚拟地址空间;其中,所述应用数据所属的第一数据类型对应一个预设的访问频率范围
采用这种内存分配机制,可以将应用数据按数据类型分配到对应的虚拟地址空间段中,这样,在回收内存时,就可以按照应用程序的运行状态,选择能够回收的数据类型对应的虚拟地址空间段中的内存空间,实现对应用程序占用的内存的选择性回收。
在上述设备中,待分配内存的应用数据类型还包括第二数据类型,所述第二数据类型的访问频率范围不同于所述第一数据类型的访问频率范围。
在上述设备中,处理器具体用于根据以下步骤确定所述应用数据所属的第一数据类型:
根据监测到的所述应用数据在内存中被访问的频率,以及预设的多个访问频率范围,确定所述应用数据对应的访问频率范围;根据所述应用数据对应的访问频率范围,确定所述应用数据所属的第一数据类型。
基于本申请实施例新定义的应用数据的数据类型,可以将访问频率较低的应用数据区分出来,在进行内存回收时,优先回收这类应用数据,从而实现内存回收的优化处理,提升用户体验。
附图说明
图1为本申请进行内存分配/回收的示意图;
图2为本申请实施例一提供的内存回收方法流程图;
图3为将应用程序的运行状态按照内存占用优先级由高到低依次划分的示意图;
图4为应用程序内存管理方式示意图;
图5为本申请实施例二提供的内存回收方法流程图;
图6建立虚拟地址空间与实际的物理地址之间的映射关系的示意图;
图7为本申请实施例提供的内存回收装置示意图;
图8为本申请提供的一种终端结构示意图。
具体实施方式
本申请实施例提出了一种新的内存回收机制,即在进行内存回收时,并不直接KILL掉应用程序,对应用程序占用的内存进行完全的清理,而是根据应用程序的运行状态,对该运行状态对应的能够清理的应用数据所占用的内存进行回收。这里,每种运行状态对应了能够回收的至少一种虚拟地址空间段,该能够回收的虚拟地址空间段对应的实际物理内存空间中即存储了在该运行状态下能够清理的应用数据。
如图1所示,本申请通过在用户态运行内存分配/回收策略,并在内核态对实际的物理内存空间进行分配/回收。也即,在进行内存分配时,在用户态识别待存储的应用数据的数据类型,并确定与该数据类型对应的虚拟地址空间段,然后在内核态分配实际的物理内存空间,建立为该应用程序分配的虚拟地址空间与实际的物理地址空间之间的映射关系。在进行内存回收时,在用户态识别应用程序的运行状态,并基于该运行状态选择至少一种虚拟地址空间段,对选择的虚拟地址空间段中被应用程序占用的虚拟地址空间进行回收,并解除被该应用程序占用的虚拟地址空间与实际的物理内存空间之间的映射关系。
下面结合说明书附图对本申请实施例作进一步详细描述。
实施例一
如图2所示,为本申请实施例一提供的内存回收方法流程图,包括以下步骤:
S201:确定待回收内存的应用程序。
在具体实施中,可以根据终端内各个应用程序的运行状态,确定待回收内存的应用程序。
如图3所示,可以将应用程序的运行状态按照内存占用优先级由高到低依次划分为前台(Forgound)状态、可见(Visible)状态、可觉察(perceptible)状态、后台(Previous)状态,缓存(Cache)状态,空(Empty)进程状态等。其中,Forgound状态的应用程序是指用户当前正在前台操作的应用程序,也即当前存在用户交互的应用程序。Visible状态的应用程序是指当前显示用户可操作界面、但用户没有在操作的应用程序。在实际实施中,Forgound状态和Visible状态可以归于一种优先级状态。Perceptible状态的应用程序是指当前显示应用界面,如果应用程序被KILL,用户可以感知到,但该应用界面为用户不可用状态,比如在某个应用程序的界面中弹出一条短消息,此时该应用程序的界面变为灰色,处于不可使用状态,此时该应用程序处于perceptible状态。Previous状态的应用程序是指在后台运行的应用程序。Cache状态的应用程序是指在一定的时间长度内使用频率低于某个阈值的应用程序,进一步地,根据应用数据的访问频率,可以进一步将缓存状态划分为不同的优先级状态(如下表一所示的Cache状态1和Cache状态2)。Empty状态的应用程序是指没有任何有用的组件在运行的应用程序。上述各应用程序运行状态所对应的应用数据平均访问频率由高到低依次为:Forgound,Visible状态、perceptible状态、Previous状态、Cache状态1、Cache状态2、及Empty进程状态,因此,上述各运行状态的优先级也是由高到低依次排列的。
在具体实施中,在当前满足内存回收的条件(比如内存不足或到达内存回收的时间周期等,具体触发内存回收的条件本申请实施例中并不做限定)时,可以根据终端内各个应用程序的运行状态,优先选择对应的内存占用优先级较低的应用程序进行内存回收,直到达到内存回收的终止条件。
S202:根据所述应用程序的运行状态,在所述应用程序占用的多种虚拟地址空间段中,选择至少一种虚拟地址空间段。
在具体实施中,根据应用程序的运行状态,以及预先设置的与不同运行状态分别对应的能够回收的至少一种虚拟地址空间段,在该应用程序占用的多种虚拟地址空间段中,选择至少一种虚拟地址空间段,并对选择的虚拟地址空间段中被该应用程序占用的虚拟地址空间进行回收。
下表一表示应用程序的不同运行状态对应的能够回收的虚拟地址空间段。
表一
在表一中,Apk/odex内存段、file-backed内存段(即,文件映射地址段)、以及Heap/BSS/Stack等是安卓进程的原始虚拟地址空间段,其中,Apk/odex内存段用于存储应用程序的字节码文件和字符串资源等,Apk的全称为Android Package,即Android安装包,odex是从Apk中提取出来的可运行文件;file-backed内存段用于存储应用程序打开文件的数据,Heap/BSS/Stack内存段用于存储应用程序常用内存数据,其中stack(栈)的空间由操作系统自动分配和释放,heap(即堆或称堆内存)的空间是手动申请和释放的,BSS的全称为Block Started by Symbol,用来存放应用程序中未初始化的全局变量和静态变量的一块内存区域。
Least-freq内存段和Less-freq内存段是本申请实施例新增加的两种虚拟地址空间段,其中,Least-freq内存段用于存储应用程序中极少被访问的应用数据,比如在运行的时间范围内被访问频率小于或等于第一阈值的应用数据。less-freq内存段用于存储应用程序中较少访问的应用数据,比如在运行的时间范围内被访问频率小于或等于第二阈值、大于第一阈值的应用数据。
需要说明的是,每个运行状态对应的可回收的虚拟地址空间段包含比自己优先级更高的运行状态对应的可回收的虚拟地址空间段,比如,针对Previous状态的应用程序,除可以回收该应用程序占用的Less-freq内存段中的内存空间外,还可以回收该应用程序占用的Least-freq内存段中的内存空间;针对处于Cache状态2的应用程序,除可以回收该应用程序占用的file-backed内存段中的内存,还可以回收该应用程序占用的Apk/odex内存段、Less-freq内存段、以及Least-freq内存段中的内存。
在具体实施中,可以根据在该应用程序的运行状态下能够回收的各种虚拟地址空间段分别对应的回收优先级,选择待回收的虚拟地址空间,回收优先级由高到低依次可以为:Least-freq内存段、Less-freq内存段、Apk/odex内存段、file-backed内存段、Heap/BSS/Stack内存段。由于应用程序的运行状态是渐变的,在到达更低优先级的运行状态时,可能在处于较高优先级时对应的可回收内存已被回收,比如,当应用程序处于Cache状态2时,可能其占用的Least-freq内存段、Less-freq内存段、以及Apk/odex内存段中的内存已被回收,在对该应用程序进行内存回收时,只能回收占用的file-backed内存段中的内存。
S203:对选择的所述至少一种虚拟地址空间段中被所述应用程序占用的虚拟地址空间进行回收。
这里,对应用程序进行内存回收也即释放被该应用程序占用的虚拟地址空间,并解除该应用程序占用的虚拟地址空间与对应的物理地址空间之间的映射关系,清除该物理地址空间内存储的应用数据。
如图4所示,linux系统中,应用程序内存管理采用将虚拟地址空间与实际的物理地址空间之间进行绑定(用于内存分配,也即建立虚拟地址空间与实际的物理地址空间之间的映射关系),以及去绑定(用于内存回收,也即解除映射(ummap))的方式。针对文件映射类的虚拟地址空间(比如file-backed、apk/odex内存段)对应的物理内存空间中的数据可以直接丢弃(drop),针对非文件映射类的虚拟地址空间(比如least-freq、less-freq、Heap等内存段),通过内存压缩(ZRAM)技术进行压缩存储。
基于上述实施例可知,本申请实施例在进行内存回收时,并不直接对应用程序占用的内存进行完全的回收,而是根据应用程序的运行状态,只对在该运行状态下能够清理的应用数据所占用的内存进行回收。这样,就不必对整个应用程序的应用数据进行完全的清理,可以减少应用数据的丢失,此外,还可以提高应用程序重新启动时的速度。
下面通过实施例二对基于本申请实施例的思想进行内存分配及回收的流程作进一步介绍。
实施例二
如图5所示,为本申请实施例二提供的内存回收方法流程图,包括以下步骤:
S501:根据待分配内存的应用数据所属的第一数据类型,从预设的多种虚拟地址空间段中选择一种虚拟地址空间段;其中,所述应用数据所属的第一数据类型对应一个预设的访问频率范围。
在具体实施中,当需要为应用程序的一种应用数据分配内存时,根据该应用数据所属的第一数据类型,以及预先设置的与不同数据类型分别对应的能够分配的虚拟地址空间段,从预设的多种虚拟地址空间段中选择一种虚拟地址空间段,并为所述应用数据分配选择的虚拟地址空间段中的虚拟地址空间。
这里的数据类型可以包括:应用程序的字节码文件和字符串资源(对应Apk/odex内存段)、应用程序打开文件的数据(对应file-backed内存段)、应用程序常用内存数据(对应Heap/BSS/Stack内存段);
除此之外,还包括本申请实施例中至少两种新定义的数据类型,这至少两种新定义的数据类型对应不同的访问频率范围,比如极少被访问的应用数据类型(访问频率小于或等于第一阈值,对应Least-freq内存段)以及较少被访问的应用数据类型(访问频率小于或等于第二阈值、大于第一阈值,对应Less-freq内存段)。
在具体实施中,应用数据的数据类型是在为该应用数据分配内存之前预先确定的。针对上述至少两种新定义的数据类型,可以在预设时长内监测被存储在内存中的应用数据被访问的频率,根据监测到的所述应用数据在内存中被访问的频率,以及预设的多个访问频率范围,确定所述应用数据对应的访问频率范围,进而确定应用数据所属的第一数据类型。
在一种方式下,可以通过在实验室测试运行应用程序,采集每个虚拟内存单元(Virtual Memory Area,vma)对应的应用数据被使用的频率。在另一种方式下,将采集算法集成到用户的终端中,定期采集。采集的方式主要使用linux页表缺页技术,定期将需要采集的vma页表设置为不能访问状态,当应用程序被访问的时候,发生缺页中断,以此记录vma对应的应用数据被使用的次数。
比如,若S501中的应用数据为应用程序中极少被访问的应用数据(在运行的时间范围内被访问频率小于或等于第一阈值),则为该应用数据分配Least-freq内存段中的虚拟地址空间。
S502:为所述应用数据分配选择的虚拟地址空间段中的虚拟地址空间。
这里,为应用程序分配内存,也即为该应用程序分配虚拟地址空间,并从终端的空闲物理内存中为所述应用数据分配物理地址空间,建立分配的所述虚拟地址空间和分配的所述物理地址空间之间的映射关系。
如图6所示,在为应用数据分配与该应用数据的数据类型相适应的虚拟地址空间段中的虚拟地址空间后,再将用户态的虚拟地址空间映射为内核态的物理地址空间。
S503:在当前需要对所述应用程序进行内存回收时,根据所述应用程序的运行状态,在所述应用程序占用的多种虚拟地址空间段中,选择至少一种虚拟地址空间段。
比如,若所述应用程序当前处于perceptible状态,则确定回收该应用程序占用的Least-freq内存段中的虚拟地址空间。
S504:对选择的所述至少一种虚拟地址空间段中被所述应用程序占用的虚拟地址空间进行回收。
这里,对应用程序进行内存回收也即释放被该应用程序占用的虚拟地址空间,并解除该应用程序占用的虚拟地址空间与对应的物理地址空间之间的映射关系,比如解除该应用程序占用的Least-freq内存段中的虚拟地址空间与其对应的实际的物理地址空间之间的映射关系,并清除该物理地址空间内存储的应用数据。
基于同一发明构思,本申请实施例中还提供了一种与内存回收方法对应的内存回收装置及设备,由于该装置及设备解决问题的原理与本申请实施例内存回收方法相似,因此该装置及设备的实施可以参见方法的实施,重复之处不再赘述。
如图7所示,为本申请实施例提供的内存回收装置示意图,包括:
确定模块71,用于确定待回收内存的应用程序;
选择模块72,用于根据所述确定模块71确定的应用程序的运行状态,在所述应用程序占用的多种虚拟地址空间段中,选择至少一种虚拟地址空间段;
内存回收模块73,用于对选择模块72选择的所述至少一种虚拟地址空间段中被所述应用程序占用的虚拟地址空间进行回收。
可选地,确定模块71具体用于:
根据终端内各个应用程序的运行状态,确定待回收内存的应用程序。
可选地,所述装置还包括:
内存分配模块74,用于根据待分配内存的应用数据所属的第一数据类型,从预设的多种虚拟地址空间段中选择一种虚拟地址空间段,并为所述应用数据分配选择的虚拟地址空间段中的虚拟地址空间;其中,所述应用数据所属的第一数据类型对应一个预设的访问频率范围。
可选地,所述待分配内存的应用数据类型还包括第二数据类型,所述第二数据类型的访问频率范围不同于所述第一数据类型的访问频率范围。
可选地,内存分配模块74具体用于根据以下步骤确定所述应用数据所属的第一数据类型:
根据监测到的所述应用数据在内存中被访问的频率,以及预设的多个访问频率范围,确定所述应用数据对应的访问频率范围;根据所述应用数据对应的访问频率范围,确定所述应用数据所属的第一数据类型。
可选地,选择模块72具体用于:
根据在所述运行状态下,能够回收的各种虚拟地址空间段分别对应的回收优先级,选择所述至少一种虚拟地址空间段。
图8描述了本申请提供的一种终端800的结构,包括:处理器801、存储器802、和通信总线803,通信总线803用于实现这些组件之间的连接通信。这里,存储器802包括内存802a和外部存储器802b,这里的内存也称内存储器,用于暂时存放处理器801中的运算数据,以及与硬盘等外部存储器交换的数据,处理器801通过内存802a与外部存储器802b进行数据交换。
存储器802中存储了如下的元素,可执行模块或者数据结果,或者他们的子集,或者他们的扩展集:
操作系统,包含各种系统程序,可以具有内核态和用户态两种运行级别。当一个进程执行系统调用而陷入内核代码中执行时,称其处于内核运行态,简称内核态。当进程处于内核态时,执行的内核代码会使用当前进程的内核栈,每个进程都有自己的内核栈。当进程在执行用户自己的代码时,称其处于用户运行态,简称用户态,此时处理器801在特权级最低的用户代码中运行。
应用程序模块,包含各种应用程序(简称应用)。
在本申请实施例中,通过调用存储器802存储的程序或指令,处理器801执行:
确定待回收内存的应用程序;
根据所述应用程序的运行状态,在所述应用程序占用的多种虚拟地址空间段中,选择至少一种虚拟地址空间段;
对选择的所述至少一种虚拟地址空间段中被所述应用程序占用的虚拟地址空间进行回收。
可选地,处理器801具体用于:
根据终端内各个应用程序的运行状态,确定待回收内存的应用程序。
可选地,处理器801具体用于:
根据待分配内存的应用数据所属的第一数据类型,从预设的多种虚拟地址空间段中选择一种虚拟地址空间段,并为所述应用数据分配选择的虚拟地址空间段中的虚拟地址空间;其中,所述应用数据所属的第一数据类型对应一个预设的访问频率范围。
可选地,所述待分配内存的应用数据类型还包括第二数据类型,所述第二数据类型的访问频率范围不同于所述第一数据类型的访问频率范围。
可选地,处理器801具体用于根据以下步骤确定所述应用数据所属的第一数据类型:
根据监测到的所述应用数据在内存中被访问的频率,以及预设的多个访问频率范围,确定所述应用数据对应的访问频率范围;根据所述应用数据对应的访问频率范围,确定所述应用数据所属的第一数据类型。
可选地,处理器801具体用于:
根据在所述运行状态下,能够回收的各种虚拟地址空间段分别对应的回收优先级,选择所述至少一种虚拟地址空间段。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (11)
1.一种内存回收方法,其特征在于,该方法包括:
确定待回收内存的应用程序;
根据所述应用程序的运行状态和在所述运行状态下能够回收的各种虚拟地址空间段分别对应的回收优先级,在所述应用程序占用的多种虚拟地址空间段中,选择至少一种虚拟地址空间段;其中,所述应用程序的运行状态描述终端内所述应用程序的当前执行状态;不同运行状态下能够回收的虚拟地址空间段不同;
对选择的所述至少一种虚拟地址空间段中被所述应用程序占用的虚拟地址空间进行回收。
2.如权利要求1所述的方法,其特征在于,确定待回收内存的应用程序,包括:
根据所述终端内各个应用程序的运行状态,确定待回收内存的应用程序。
3.如权利要求1所述的方法,其特征在于,所述方法还包括:
根据待分配内存的应用数据所属的第一数据类型,从预设的多种虚拟地址空间段中选择一种虚拟地址空间段,并为所述应用数据分配选择的虚拟地址空间段中的虚拟地址空间;其中,所述应用数据所属的第一数据类型对应一个预设的访问频率范围。
4.如权利要求3所述的方法,其特征在于,还包括:
所述待分配内存的应用数据类型还包括第二数据类型,所述第二数据类型的访问频率范围不同于所述第一数据类型的访问频率范围。
5.如权利要求3或4所述的方法,其特征在于,根据以下步骤确定所述应用数据所属的第一数据类型:
根据监测到的所述应用数据在内存中被访问的频率,以及预设的多个访问频率范围,确定所述应用数据对应的访问频率范围;
根据所述应用数据对应的访问频率范围,确定所述应用数据所属的第一数据类型。
6.一种内存回收装置,其特征在于,该装置包括:
确定模块,用于确定待回收内存的应用程序;
选择模块,用于根据所述确定模块确定的应用程序的运行状态和在所述运行状态下能够回收的各种虚拟地址空间段分别对应的回收优先级,在所述应用程序占用的多种虚拟地址空间段中,选择至少一种虚拟地址空间段;其中,所述应用程序的运行状态描述终端内所述应用程序的当前执行状态;不同运行状态下能够回收的虚拟地址空间段不同;
内存回收模块,用于对所述选择模块选择的所述至少一种虚拟地址空间段中被所述应用程序占用的虚拟地址空间进行回收。
7.如权利要求6所述的装置,其特征在于,所述确定模块具体用于:
根据所述终端内各个应用程序的运行状态,确定待回收内存的应用程序。
8.如权利要求6或7所述的装置,其特征在于,所述装置还包括:
内存分配模块,用于根据待分配内存的应用数据所属的第一数据类型,从预设的多种虚拟地址空间段中选择一种虚拟地址空间段,并为所述应用数据分配选择的虚拟地址空间段中的虚拟地址空间;其中,所述应用数据所属的第一数据类型对应一个预设的访问频率范围。
9.如权利要求8所述的装置,其特征在于,所述待分配内存的应用数据类型还包括第二数据类型,所述第二数据类型的访问频率范围不同于所述第一数据类型的访问频率范围。
10.如权利要求9所述的装置,其特征在于,所述内存分配模块具体用于根据以下步骤确定所述应用数据所属的第一数据类型:
根据监测到的所述应用数据在内存中被访问的频率,以及预设的多个访问频率范围,确定所述应用数据对应的访问频率范围;根据所述应用数据对应的访问频率范围,确定所述应用数据所属的第一数据类型。
11.一种终端,其特征在于,包括:处理器、存储器、和通信总线,所述通信总线用于实现所述处理器和所述存储器之间的连接通信;所述处理器用于执行所述存储器中存储的以下指令:
确定待回收内存的应用程序;
根据所述应用程序的运行状态和在所述运行状态下能够回收的各种虚拟地址空间段分别对应的回收优先级,在所述应用程序占用的多种虚拟地址空间段中,选择至少一种虚拟地址空间段;其中,所述应用程序的运行状态描述终端内所述应用程序的当前执行状态;不同运行状态下能够回收的虚拟地址空间段不同;
对选择的所述至少一种虚拟地址空间段中被所述应用程序占用的虚拟地址空间进行回收。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2016/080374 WO2017185263A1 (zh) | 2016-04-27 | 2016-04-27 | 一种内存回收方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107912063A CN107912063A (zh) | 2018-04-13 |
CN107912063B true CN107912063B (zh) | 2021-05-18 |
Family
ID=60160640
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680014809.7A Active CN107912063B (zh) | 2016-04-27 | 2016-04-27 | 一种内存回收方法及装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10901890B2 (zh) |
EP (1) | EP3441881A4 (zh) |
CN (1) | CN107912063B (zh) |
WO (1) | WO2017185263A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102610058B1 (ko) * | 2017-01-10 | 2023-12-06 | 삼성전자주식회사 | 프로세스의 권한 상승을 검출하는 전자 장치 및 저장 매체 |
CN109062696A (zh) * | 2018-08-02 | 2018-12-21 | 郑州云海信息技术有限公司 | 一种注销内存地址的方法及装置 |
CN110175075A (zh) * | 2019-05-21 | 2019-08-27 | 深圳市君和睿通科技股份有限公司 | 安卓系统内存优化方法及装置 |
CN111767136B (zh) * | 2020-06-02 | 2023-04-14 | Oppo(重庆)智能科技有限公司 | 进程管理方法、终端及具有存储功能的装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6128713A (en) * | 1997-09-24 | 2000-10-03 | Microsoft Corporation | Application programming interface enabling application programs to control allocation of physical memory in a virtual memory system |
CN103645955A (zh) * | 2013-12-16 | 2014-03-19 | 百度在线网络技术(北京)有限公司 | 应用程序的运行管理方法和装置 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6898602B2 (en) * | 2002-04-22 | 2005-05-24 | Sun Microsystems Inc. | Measuring the exact memory requirement of an application through intensive use of garbage collector |
JP4060322B2 (ja) * | 2005-03-28 | 2008-03-12 | 三菱電機株式会社 | アプリケーション管理装置およびそのソフトウェアを格納した記憶媒体 |
CN101833512A (zh) * | 2010-04-22 | 2010-09-15 | 中兴通讯股份有限公司 | 一种内存回收方法及其装置 |
US20120209413A1 (en) * | 2011-02-14 | 2012-08-16 | Microsoft Corporation | Background Audio on Mobile Devices |
JP2012221217A (ja) * | 2011-04-08 | 2012-11-12 | Sony Corp | メモリ管理装置、メモリ管理方法、および、制御プログラム |
US9032413B2 (en) * | 2011-09-01 | 2015-05-12 | Microsoft Technology Licensing, Llc | Decoupling background work and foreground work |
CN103218307B (zh) * | 2013-04-18 | 2016-03-30 | 海信集团有限公司 | 内存管理系统和内存管理方法 |
CN103500121A (zh) * | 2013-09-29 | 2014-01-08 | 深圳Tcl新技术有限公司 | 一种进程管理方法及装置 |
CN103631661B (zh) * | 2013-11-27 | 2017-04-05 | 青岛海信电器股份有限公司 | 一种内存管理方法和装置 |
CN104484282B (zh) | 2014-12-31 | 2017-07-07 | 广东欧珀移动通信有限公司 | 一种内存回收方法和装置 |
US9710165B1 (en) * | 2015-02-18 | 2017-07-18 | Pure Storage, Inc. | Identifying volume candidates for space reclamation |
US10185658B2 (en) * | 2016-02-23 | 2019-01-22 | Sandisk Technologies Llc | Efficient implementation of optimized host-based garbage collection strategies using xcopy and multiple logical stripes |
-
2016
- 2016-04-27 CN CN201680014809.7A patent/CN107912063B/zh active Active
- 2016-04-27 WO PCT/CN2016/080374 patent/WO2017185263A1/zh active Application Filing
- 2016-04-27 EP EP16899776.5A patent/EP3441881A4/en not_active Ceased
-
2018
- 2018-10-25 US US16/171,304 patent/US10901890B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6128713A (en) * | 1997-09-24 | 2000-10-03 | Microsoft Corporation | Application programming interface enabling application programs to control allocation of physical memory in a virtual memory system |
CN103645955A (zh) * | 2013-12-16 | 2014-03-19 | 百度在线网络技术(北京)有限公司 | 应用程序的运行管理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2017185263A1 (zh) | 2017-11-02 |
EP3441881A1 (en) | 2019-02-13 |
EP3441881A4 (en) | 2019-04-10 |
US10901890B2 (en) | 2021-01-26 |
CN107912063A (zh) | 2018-04-13 |
US20190065368A1 (en) | 2019-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107912063B (zh) | 一种内存回收方法及装置 | |
EP2840495B1 (en) | Container-based processing method and apparatus | |
CN108459898B (zh) | 一种资源回收方法及装置 | |
CN109753361B (zh) | 一种内存管理方法、电子设备及存储装置 | |
CN109491606B (zh) | 一种全闪存储空间管理方法、系统、设备及计算机介质 | |
CN103885753A (zh) | 缓存图片的管理方法、装置和客户端 | |
CN106569917B (zh) | 一种数据备份方法及移动移动终端 | |
CN110795234A (zh) | 一种资源调度方法及装置 | |
CN112231053B (zh) | 一种负载均衡服务分配方法及装置 | |
CN116502225B (zh) | 自适应分组冗余编排的病毒扫描方法、装置及电子设备 | |
CN105205409A (zh) | 一种防止内存复用中数据泄露的方法及计算机系统 | |
CN103034636A (zh) | 一种非关系型数据库的回滚方法、装置及系统 | |
CN109062781B (zh) | 一种报文缓冲区管理方法及装置 | |
CN112035253B (zh) | 一种linux系统页缓存回收方法及相关装置 | |
CN107480071B (zh) | 缓存数据迁移方法及装置 | |
CN106469121B (zh) | 一种内存分配的方法及装置 | |
CN108762985B (zh) | 数据恢复方法及相关产品 | |
CN116049025B (zh) | 动态调整内存回收gc参数的方法、电子设备及存储介质 | |
CN112650693A (zh) | 一种静态内存管理方法及装置 | |
CN112162864A (zh) | 一种云资源分配方法、装置及存储介质 | |
CN111090627A (zh) | 基于池化的日志存储方法、装置、计算机设备及存储介质 | |
CN112463350A (zh) | 后台应用优化方法及装置、存储介质及电子装置 | |
CN112000471B (zh) | 内存优化方法及装置 | |
CN106708831B (zh) | 一种fat镜像文件处理的方法及装置 | |
CN104298561A (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 | ||
GR01 | Patent grant |