CN110955495B - 虚拟化内存的管理方法、装置和存储介质 - Google Patents
虚拟化内存的管理方法、装置和存储介质 Download PDFInfo
- Publication number
- CN110955495B CN110955495B CN201911174563.1A CN201911174563A CN110955495B CN 110955495 B CN110955495 B CN 110955495B CN 201911174563 A CN201911174563 A CN 201911174563A CN 110955495 B CN110955495 B CN 110955495B
- Authority
- CN
- China
- Prior art keywords
- page
- memory
- memory page
- missing
- access request
- 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
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- 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
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开提供一种虚拟化内存的管理方法、装置和存储介质,响应应用程序访问请求,加载与访问请求对应的第一内存页,其中,第一内存页为访问请求所请求的数据占用的内存空间,获取第一内存页的缺页中断次数,根据第一内存页的缺页中断次数控制回收第一内存页,释放内存空间。通过对应用程序访问的内存页进行页面回收,可以腾出更多的内存空间,而根据内存页的缺页中断次数对内存页进行回收,可以只回收缺页中断次数较少的内存页,不回收缺页中断次数多的内存页,使得页面回收更有针对性。
Description
技术领域
本公开涉及计算机领域,尤其涉及一种虚拟化内存的管理方法、装置和存储介质。
背景技术
在现代计算机系统中,内存管理机制是所有操作系统内核一个重要的子系统,不同操作系统都有自己的内存管理策略,经过长期的发展,各主流的操作系统的内存管理策略逐渐趋于一致。
随着虚拟化技术的发展,一台物理机上可以运行多个虚拟机,多个虚拟机之间虽然独立运行,但是多个虚拟机共享物理机的物理内存。现有的内存管理策略对物理机的内存进行系统层面的统一管理,以window系统和linux系统为例,可以由内存管理单元(Memory Management Unit,简称MMU)进行内存管理,MMU通过内存压缩和页面置换对内存进行管理,内存压缩是指在内存空间不够用时,暂时将不用的内存页面进行压缩处理,仍存放在内存中,当需要的时候从压缩内存中转换调用,从而能够减少进程占用内存的空间,以腾出更多物理内存供急需内存的应用使用。页面置换是指当内存中没有空闲页面时,选择一部分页面作为交换文件写入硬盘中,从而腾出内存空间供即将调入的页面使用。
但是在虚拟化场景下,现有系统层面的内存管理机制以物理机的整体内存为出发点,并不能考虑单独虚拟机的内存,会存在内存浪费的问题。
发明内容
本公开提供一种虚拟化内存的管理方法、装置和存储介质,能够降低内存资源的浪费。
本公开第一方面提供一种虚拟化内存的管理方法,所述方法包括:
响应应用程序访问请求,加载与所述访问请求对应的第一内存页,其中,所述第一内存页为所述访问请求所请求的数据占用的内存空间;
获取所述第一内存页的缺页中断次数;
根据所述第一内存页的缺页中断次数控制回收所述第一内存页,释放内存空间。
可选的,所述获取所述第一内存页的缺页中断次数,包括:
当所述第一内存页发生缺页中断时,将所述第一内存页的缺页中断次数加1;
当所述访问请求用于对所述第一内存页进行读操作时,执行对所述第一内存页的读操作,并在读操作完成后,回收所述第一内存页,其中,在所述第一内存页被回收之后,当所述应用再次访问所述第一内存页时,所述第一内存页将发生缺页中断;
当所述访问请求用于对所述第一内存页进行写操作时,执行对所述第一内存页的写操作,在写操作完成后,不回收所述第一内存页,当所述应用程序再次访问所述第一内存页时,所述第一内存页不发生缺页中断。
可选的,所述根据所述第一内存页的缺页中断次数控制回收所述第一内存页,释放内存空间,包括:
当再次启动所述应用程序时,如果所述第一内存页的缺页中断次数低于预设次数,则回收所述第一内存页,释放所述第一内存页占用的内存空间。
可选的,所述根据所述第一内存页的缺页中断次数控制回收所述第一内存页,释放内存空间,包括:
当再次启动所述应用程序时,如果所述第一内存页的缺页中断次数的排序位于所述应用程序对应的多个内存页中缺页中断次数的排序的最后N个,则回收所述第一内存页,释放所述第一内存页占用的内存空间,N大于或等于1。
可选的,所述方法应用于模拟器中,所述模拟器运行在计算机的操作系统上,所述计算机的操作系统为window系统或者Linux系统,所述模拟器的操作系统为安卓系统。
本公开第二方面提供一种虚拟化内存的管理装置,所述装置包括:
加载模块,用于响应应用程序访问请求,加载与所述访问请求对应的第一内存页,其中,所述第一内存页为所述访问请求所请求的数据占用的内存空间;
统计模块,用于获取所述第一内存页的缺页中断次数;
页面回收模块,用于根据所述第一内存页的缺页中断次数控制回收所述第一内存页,释放内存空间。
可选的,所述统计模块具体用于:
当所述第一内存页发生缺页中断时,将所述第一内存页的缺页中断次数加1;
当所述访问请求用于对所述第一内存页进行读操作时,执行对所述第一内存页的读操作,并在读操作完成后,回收所述第一内存页,其中,在所述第一内存页被回收之后,当所述应用再次访问所述第一内存页时,所述第一内存页将发生缺页中断;
当所述访问请求用于对所述第一内存页进行写操作时,执行对所述第一内存页的写操作,在写操作完成后,不回收所述第一内存页,当所述应用程序再次访问所述第一内存页时,所述第一内存页不发生缺页中断。
可选的,所述页面回收模块具体用于:
当再次启动所述应用程序时,如果所述第一内存页的缺页中断次数低于预设次数,则回收所述第一内存页,释放所述第一内存页占用的内存空间。
可选的,所述页面回收模块具体用于:
当再次启动所述应用程序时,如果所述第一内存页的缺页中断次数的排序位于所述应用程序对应的多个内存页中缺页中断次数的排序的最后N个,则回收所述第一内存页,释放所述第一内存页占用的内存空间,N大于或等于1。
可选的,所述装置应用于模拟器中,所述模拟器运行在计算机的操作系统上,所述计算机的操作系统为window系统或者Linux系统,所述模拟器的操作系统为安卓系统。
本公开第三方面提供一种计算机可读存储介质,所述计算机可读存储介质存储有指令,当所述指令被执行时,使得计算机执行如本公开第一方面所述的方法。
本公开提供一种虚拟化内存的管理方法、装置和存储介质,响应应用程序访问请求,加载与访问请求对应的第一内存页,其中,第一内存页为访问请求所请求的数据占用的内存空间,获取第一内存页的缺页中断次数,根据第一内存页的缺页中断次数控制回收第一内存页,释放内存空间。通过对应用程序访问的内存页进行页面回收,可以腾出更多的内存空间,而根据内存页的缺页中断次数对内存页进行回收,可以只回收缺页中断次数较少的内存页,不回收缺页中断次数多的内存页,使得页面回收更有针对性。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1为计算机虚拟化的一种示意图;
图2为本公开适用的计算机的物理结构示意图;
图3为本公开实施例一提供的虚拟化内存的管理方法的流程图;
图4为本公开实施例二提供的一种虚拟化内存的管理装置的结构示意图。
通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
内存(Memory)是计算机中重要的部件之一,它是外存与处理器进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。内存也被称为内存储器或主存储器,其作用是用于暂时存放处理器中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,处理就会把需要运算的数据调到内存中进行运算,当运算完成后处理器再将结果传送出来,内存的运行也决定了计算机的稳定运行。
本公开提供一种虚拟化内存的管理方法,虚拟化技术使得一台物理计算机上可以运行多台虚拟机,图1为计算机虚拟化的一种示意图,如图1所示,计算机被虚拟化为N个模拟器,模拟器也称为虚拟机,N大于或等于2。N个模拟器共享计算机的硬件资源,该硬件资源包括处理器、内存、外存等。
图2为本公开适用的计算机的物理结构示意图,如图2所示,该计算机包括处理器11和内存12,该处理器11内部包括:一个或多个中央处理单元(Central Processing Unit,简称CPU)111、缓存112、内存控制器113和缓存控制器114。处理器11通过缓存控制器114访问缓存,通过内存控制器113访问内存。
常见的内存12包括:只读存储器(Read Only Memory,简称ROM)、随机存储器(Random Access Memory,简称RAM)或者非易失性存储器(Non-Volatile Memory,简称NVM)等。RAM分为:动态随机存储器(Dynamic RAM,简称DRAM)。
虽然,上述N个模拟器共享计算机11的硬件资源,但是N个模拟器具有自己独立的操作系统,能够独立运行,模拟器的操作系统可以与计算机的操作系统相同,也可以与计算机的操作系统不同。例如,计算机11的操作系统为window系统或者Linux系统,模拟器的操作系统也为window系统或者Linux系统。或者,计算机的操作系统为window系统或者Linux系统,模拟器的操作系统为安卓(Android)系统或者IOS系统。
示例性的,该模拟器可以为网易MuMu,网易MuMu是专门为手机游戏(以下简称手游)用户提供的一款能通过电脑玩手游的免费安卓模拟器应用程序,通过在电脑上提供一个稳定流畅的安卓手机使用环境,为用户提供海量免费的游戏资源。可以理解,在计算机上虚拟化得到的模拟器不仅可以安装游戏,还可以安装现有物理手机上安装的各种应用。
现有的内存管理方法都是对计算机的物理内存进行系统级管理,即对计算机的物理内存统一管理,管理过程不会关注计算机上的模拟器,但是,现有的内存管理方法会造成资源的浪费。本公开中由计算机上运行的模拟器对自身内存进行管理。
在实际应用中,很多应用(application,简称APP)程序申请的内存只被使用很小的一部分,或者使用几次之后就不再使用,但是不再使用或者使用小部分的内存块仍然被该应用占用,从而造成了大量内存资源的浪费。实践中,二八原则充分的体现了其普适性,甚至可以达到一九,也就是应用在运行期间90%的时间只使用了其所申请的10%的内存空间。本公开的方法通过提取90%的少用或者不用的内存,进行内存的释放或者压缩,从而达到节省内存资源的目的。
图3为本公开实施例一提供的虚拟化内存的管理方法的流程图,该方法可以由模拟器执行,该模拟器运行在计算机的操作系统上,该计算机上可以运行多个模拟器,每个模拟器都可以执行本实施例的方法。如图3所示,本实施例提供的方法包括以下步骤:
步骤S101、响应应用程序访问请求,加载与该访问请求对应的第一内存页,其中,第一内存页为访问请求所请求的数据占用的内存空间。
用户启动应用程序之后,如果应用需要访问某个文件,会触发用于访问内存的访问请求,模拟器中的内存管理单元(Memory Management Unit,简称MMU)接收到内存的访问请求。MMU也称作分页内存管理单元,为了便于对内存进行管理,将内存分为多个页面,页面也称为内存页,MMU通常以页为最小管理单元对内存进行管理。每个内存页占用一定大小的内存空间,在Linux系统中,通常每个内存页的大小为4KB,内存页中的内存地址是连续的。
MMU用于进行mmap,mmap是一种将文件或者其他对象映射进内存的方法,一个文件可以映射到一个或者多个内存页上。MMU还可以进行以下管理:地址映射(虚地址和实地址的映射)、页面维护、页面分配、空闲内存管理、页面替换等。内存的访问请求中携带有虚地址,虚地址通常由操作系统分配和释放,MMU接收到内存的访问请求后,根据虚地址查找该虚地址对应的内存页,如果MMU已经为该虚地址分配过对应的内存页,那么MMU能够在内存中查找到该虚地址对应的内存页,如果MMU没有为该虚地址分配过对应的内存页,那么MMU在内存中找不到该虚地址对应的内存页。
本实施例中,访问请求访问第一内存页,访问请求访问的第一内存页的个数可能为一个或者多个。
S102、获取第一内存页的缺页中断次数。
若MMU在内存中找不到该虚地址对应的页面,MMU就会产生缺页中断。现有技术中,MMU会在以下情况产生缺页中断:(1)当虚地址第一次被访问时,由于操作系统还没有为该虚地址分配对应的内存页,因此,MMU在内存中找不到该虚地址对应的内存页。(2)该虚地址已被分配对应的内存页,但是该虚地址对应的内存页长时间未被使用,因此,该虚地址对应的内存页的数据被替换到了磁盘中。
本实施例中,MMU除了在以上两种情况下产生缺页中断,还在以下情况下产生中断:当内存页发生读操作的情况下,在读操作完成后将内存页回收,内存页回收之后MMU在内存中找不到该内存页,当应用程序下次再访问该内存页时,将会产生缺页中断。在上述三种情况下产生的缺页中断,MMU均会将页面的缺页中断次数加1,页面的缺页中断次数是指该页面发生缺页中断操作的次数。本实施例中,当该内存页发生写操作的情况下,在写操作结完成后不将该内存页回收,当再次访问该内存页时,不会产生缺页中断。
内存的访问请求用于对所访问的内存页进行读操作或者写操作,读操作对访问的内存页没有修改,写操作对访问的内存页进行了修改。
应用程序可能会访问多个第一内存页,对每个第一内存页均通过如下方式统计缺页中断次数:当第一内存页发生缺页中断时,将第一内存页的缺页中断次数加1。当访问请求用于对第一内存页进行读操作时,执行对第一内存页的读操作,并在读操作完成后,回收第一内存页,其中,在第一内存页被回收之后,当应用再次访问第一内存页时,第一内存页将发生缺页中断。当访问请求用于对第一内存页进行写操作时,执行对第一内存页的写操作,在写操作完成后,不回收第一内存页,当应用程序再次访问第一内存页时,第一内存页不发生缺页中断。
通过一段时间的统计,可以得到应用访问的所有内存页的缺页中断次数,其中,缺页中断次数越多的内存页表示对该内存页的读操作多于写操作,并且长时间没有进行写操作了,即该内存页为写频率较低的页面。而缺页中断次数较少的内存页通常为以下两种页面:(1)该内存页进行了写操作,一个内存页进行写操作之后,由于采用本实施例的方法该内存页不会被回收,对该内存页的缺页中断次数不会再统计。(2)用户虽然申请了该内存页,但是很少或者没有实际的使用到该内存页,可能读操作也没有发生。
S103、根据第一内存页的缺页中断次数控制回收第一内存页,释放内存空间。
本实施例中,对内存页回收可以包括:当内存页中有脏数据时,将内存页中的数据写入磁盘,释放或者压缩该内存页。当内存页中没有脏数据时,释放或者压缩该内存页。内存页中的脏数据是由于写操作产生的。释放内存页后该内存页相当于一个空白内存页,也可以重新分配给该应用程序或者其他应用使用。压缩内存页是指对内存页进行压缩处理,仍存放在内存中,当需要的时候从压缩内存中转换调用,从而能够减少内存页占用的内存空间。
本实施例中,当应用程序再一次被启动时,根据第一内存页的缺页中断次数回收内存页,通过回收应用程序的部分内存页,释放了无用的内存空间,降低了内存资源的浪费,其中,被回收的内存页的缺页中断次数低于未被回收的内存页的缺页中断次数。
一种方式中,当再次启动应用程序时,如果第一内存页的缺页中断次数低于预设次数,则回收第一内存页,释放第一内存页占用的内存空间。如果第一内存页的缺页中断次数低于预设次数等于或者大于预设次数,则不回收第一内存页。
该方式对应用程序对应的内存页中缺页中断次数低于预设次数的页面进行了回收,该预设次数预先配置好,例如,预设次数为5,那么将应用程序对应的内存页中缺页中断次数低于5次的内存页均回收,将缺页中断次数大于或者等于5次的内存页不回收。
另一种方式中,当再次启动应用程序时,如果第一内存页的缺页中断次数的排序位于应用程序对应的多个内存页中缺页中断次数的排序的最后N个,则回收第一内存页,释放第一内存页占用的内存空间,N大于或等于1。N可以是一个固定值,预先配置好,也可以是一个动态值,由MMU实时确定。
该方式对应用程序对应的内存页中缺页中断次数较低的N个内存页进行了回收,假设N为固定值3,那么将应用程序对应的内存页中缺页中断次数最低的3个页面回收。N还可以根据应用程序对应的内存页的个数确定,假设应用程序对应的页面的个数为L,那么N可以为L的1/2或者1/3,如果N的1/2或者1/3不是整数,则可以向下或者向上取整。
通过对应用程序对应的内存页中的部分内存页进行页面回收,可以腾出更多的内存空间,本发明实施例中只回收缺页中断次数较少的内存页,不回收缺页中断次数多的内存页。缺页中断次数较少的内存页通常为用户不常访问的内存页,缺页中断次数高的内存页为用户频繁访问的内存页,只回收一些用户不常用的内存页,对于用户频繁访问的内存页不回收,在降低内存空间浪费的同时,还能够保证应用的性能不受影响,使得页面回收更有针对性。
对缺页中断次数高的内存页,如果进行回收,多次重复回收算法执行在同一个内存页上,相当于无效回收,回收付出的成本远大于利益,因此,本实施例中不对缺页中断次数高的内存页回收。而对缺页中断次数较少的内存页进行回收,使得应用程序在本次运行过程中,只需进行较少次数的页面回收即可,从而节省了页面回收的开销。
本实施例中,响应应用程序访问请求,加载与访问请求对应的第一内存页,其中,第一内存页为访问请求所请求的数据占用的内存空间,获取第一内存页的缺页中断次数,根据第一内存页的缺页中断次数控制回收第一内存页,释放内存空间。通过对应用程序访问的内存页进行页面回收,可以腾出更多的内存空间,而根据内存页的缺页中断次数对内存页进行回收,可以只回收缺页中断次数较少的内存页,不回收缺页中断次数多的内存页,使得页面回收更有针对性。
图4为本公开实施例二提供的一种虚拟化内存的管理装置的结构示意图,如图4所示,该模拟器包括:
加载模块21,用于响应应用程序访问请求,加载与所述访问请求对应的第一内存页,其中,所述第一内存页为所述访问请求所请求的数据占用的内存空间;
统计模块22,用于获取所述第一内存页的缺页中断次数;
页面回收模块23,用于根据所述第一内存页的缺页中断次数控制回收所述第一内存页,释放内存空间。
可选的,所述统计模块22具体用于:
当所述第一内存页发生缺页中断时,将所述第一内存页的缺页中断次数加1;
当所述访问请求用于对所述第一内存页进行读操作时,执行对所述第一内存页的读操作,并在读操作完成后,回收所述第一内存页,其中,在所述第一内存页被回收之后,当所述应用再次访问所述第一内存页时,所述第一内存页将发生缺页中断;
当所述访问请求用于对所述第一内存页进行写操作时,执行对所述第一内存页的写操作,在写操作完成后,不回收所述第一内存页,当所述应用程序再次访问所述第一内存页时,所述第一内存页不发生缺页中断。
可选的,所述页面回收模块23具体用于:当再次启动所述应用程序时,如果所述第一内存页的缺页中断次数低于预设次数,则回收所述第一内存页,释放所述第一内存页占用的内存空间。
可选的,所述页面回收模块23具体用于:当再次启动所述应用程序时,如果所述第一内存页的缺页中断次数的排序位于所述应用程序对应的多个内存页中缺页中断次数的排序的最后N个,则回收所述第一内存页,释放所述第一内存页占用的内存空间,N大于或等于1。
可选的,所述装置应用于模拟器中,所述模拟器运行在计算机的操作系统上,所述计算机的操作系统为window系统或者Linux系统,所述模拟器的操作系统为安卓系统。
本实施例的装置,可用于执行实施例一的方法,具体实现方式和技术效果类似,这里不再赘述。
本公开实施例三提供一种计算机可读存储介质,所述计算机可读存储介质存储有指令,当所述指令被执行时,使得计算机执行实施例一的方法,具体实现方式和技术效果类似,这里不再赘述。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求书指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求书来限制。
Claims (8)
1.一种虚拟化内存的管理方法,其特征在于,所述方法包括:
响应应用程序访问请求,加载与所述访问请求对应的第一内存页,其中,所述第一内存页为所述访问请求所请求的数据占用的内存空间;
获取所述第一内存页的缺页中断次数;
根据所述第一内存页的缺页中断次数控制回收所述第一内存页,释放内存空间;
所述获取所述第一内存页的缺页中断次数,包括:
当所述第一内存页发生缺页中断时,将所述第一内存页的缺页中断次数加1;
当所述访问请求用于对所述第一内存页进行读操作时,执行对所述第一内存页的读操作,并在读操作完成后,回收所述第一内存页,其中,在所述第一内存页被回收之后,当所述应用再次访问所述第一内存页时,所述第一内存页将发生缺页中断;
当所述访问请求用于对所述第一内存页进行写操作时,执行对所述第一内存页的写操作,在写操作完成后,不回收所述第一内存页,当所述应用程序再次访问所述第一内存页时,所述第一内存页不发生缺页中断。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一内存页的缺页中断次数控制回收所述第一内存页,释放内存空间,包括:
当再次启动所述应用程序时,如果所述第一内存页的缺页中断次数低于预设次数,则回收所述第一内存页,释放所述第一内存页占用的内存空间。
3.根据权利要求1所述的方法,其特征在于,所述根据所述第一内存页的缺页中断次数控制回收所述第一内存页,释放内存空间,包括:
当再次启动所述应用程序时,如果所述第一内存页的缺页中断次数的排序位于所述应用程序对应的多个内存页中缺页中断次数的排序的最后N个,则回收所述第一内存页,释放所述第一内存页占用的内存空间,N大于或等于1。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述方法应用于模拟器中,所述模拟器运行在计算机的操作系统上,所述计算机的操作系统为window系统或者Linux系统,所述模拟器的操作系统为安卓系统。
5.一种虚拟化内存的管理装置,其特征在于,包括:
加载模块,用于响应应用程序访问请求,加载与所述访问请求对应的第一内存页,其中,所述第一内存页为所述访问请求所请求的数据占用的内存空间;
统计模块,用于获取所述第一内存页的缺页中断次数;
页面回收模块,用于根据所述第一内存页的缺页中断次数控制回收所述第一内存页,释放内存空间;
所述统计模块具体用于:
当所述第一内存页发生缺页中断时,将所述第一内存页的缺页中断次数加1;
当所述访问请求用于对所述第一内存页进行读操作时,执行对所述第一内存页的读操作,并在读操作完成后,回收所述第一内存页,其中,在所述第一内存页被回收之后,当所述应用再次访问所述第一内存页时,所述第一内存页将发生缺页中断;
当所述访问请求用于对所述第一内存页进行写操作时,执行对所述第一内存页的写操作,在写操作完成后,不回收所述第一内存页,当所述应用程序再次访问所述第一内存页时,所述第一内存页不发生缺页中断。
6.根据权利要求5所述的装置,其特征在于,所述页面回收模块具体用于:
当再次启动所述应用程序时,如果所述第一内存页的缺页中断次数低于预设次数,则回收所述第一内存页,释放所述第一内存页占用的内存空间。
7.根据权利要求5所述的装置,其特征在于,所述页面回收模块具体用于:
当再次启动所述应用程序时,如果所述第一内存页的缺页中断次数的排序位于所述应用程序对应的多个内存页中缺页中断次数的排序的最后N个,则回收所述第一内存页,释放所述第一内存页占用的内存空间,N大于或等于1。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有指令,当所述指令被执行时,使得计算机执行如权利要求1-4任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911174563.1A CN110955495B (zh) | 2019-11-26 | 2019-11-26 | 虚拟化内存的管理方法、装置和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911174563.1A CN110955495B (zh) | 2019-11-26 | 2019-11-26 | 虚拟化内存的管理方法、装置和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110955495A CN110955495A (zh) | 2020-04-03 |
CN110955495B true CN110955495B (zh) | 2022-08-05 |
Family
ID=69978534
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911174563.1A Active CN110955495B (zh) | 2019-11-26 | 2019-11-26 | 虚拟化内存的管理方法、装置和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110955495B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113590509B (zh) * | 2020-04-30 | 2024-03-26 | 华为技术有限公司 | 一种页交换的方法、存储系统和电子设备 |
CN111984374B (zh) * | 2020-08-20 | 2021-07-23 | 海光信息技术股份有限公司 | 用于管理安全内存的方法及其系统、装置和存储介质 |
CN114253458B (zh) * | 2020-09-21 | 2024-04-26 | 华为技术有限公司 | 内存缺页异常的处理方法、装置、设备及存储介质 |
CN112346879B (zh) * | 2020-11-06 | 2023-08-11 | 网易(杭州)网络有限公司 | 进程管理方法、装置、计算机设备及存储介质 |
CN117130565B (zh) * | 2023-10-25 | 2024-02-06 | 苏州元脑智能科技有限公司 | 数据处理方法、装置、磁盘阵列卡及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106843906A (zh) * | 2017-02-22 | 2017-06-13 | 郑州云海信息技术有限公司 | 一种调整系统页面大小的方法和服务器 |
CN107480074A (zh) * | 2017-08-31 | 2017-12-15 | 郑州云海信息技术有限公司 | 一种缓存方法、装置及电子设备 |
CN107885666A (zh) * | 2016-09-28 | 2018-04-06 | 华为技术有限公司 | 一种内存管理方法和装置 |
CN109508301A (zh) * | 2017-09-14 | 2019-03-22 | 中国移动通信集团重庆有限公司 | 终端、应用数据的处理方法、数据处理设备及存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8949989B2 (en) * | 2009-08-17 | 2015-02-03 | Qualcomm Incorporated | Auditing a device |
US9665296B2 (en) * | 2014-05-07 | 2017-05-30 | Sandisk Technologies Llc | Method and computing device for using both volatile memory and non-volatile swap memory to pre-load a plurality of applications |
-
2019
- 2019-11-26 CN CN201911174563.1A patent/CN110955495B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107885666A (zh) * | 2016-09-28 | 2018-04-06 | 华为技术有限公司 | 一种内存管理方法和装置 |
CN106843906A (zh) * | 2017-02-22 | 2017-06-13 | 郑州云海信息技术有限公司 | 一种调整系统页面大小的方法和服务器 |
CN107480074A (zh) * | 2017-08-31 | 2017-12-15 | 郑州云海信息技术有限公司 | 一种缓存方法、装置及电子设备 |
CN109508301A (zh) * | 2017-09-14 | 2019-03-22 | 中国移动通信集团重庆有限公司 | 终端、应用数据的处理方法、数据处理设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110955495A (zh) | 2020-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110955495B (zh) | 虚拟化内存的管理方法、装置和存储介质 | |
US9910602B2 (en) | Device and memory system for storing and recovering page table data upon power loss | |
US8453015B2 (en) | Memory allocation for crash dump | |
US9547600B2 (en) | Method and system for restoring consumed memory after memory consolidation | |
US9852054B2 (en) | Elastic caching for Java virtual machines | |
US9015203B2 (en) | Balloon object feedback for Java Virtual Machines | |
US20230266814A1 (en) | Container-based application management method and apparatus | |
US11150962B2 (en) | Applying an allocation policy to capture memory calls using a memory allocation capture library | |
CN111868678B (zh) | 混合存储器系统 | |
KR20150105323A (ko) | 데이터 스토리지 방법 및 시스템 | |
CN111919201B (zh) | 混合式存储器系统 | |
US20130091321A1 (en) | Method and apparatus for utilizing nand flash in a memory system hierarchy | |
US20180150219A1 (en) | Data accessing system, data accessing apparatus and method for accessing data | |
US11144464B2 (en) | Information processing device, access controller, information processing method, and computer program for issuing access requests from a processor to a sub-processor | |
US10268592B2 (en) | System, method and computer-readable medium for dynamically mapping a non-volatile memory store | |
US20190278632A1 (en) | Information processing apparatus and information processing system | |
CN111868679B (zh) | 混合存储器系统 | |
CN115617542A (zh) | 内存交换方法、装置、计算机设备及存储介质 | |
WO2014061068A1 (en) | Storage system and method for controlling storage system | |
JP2017033375A (ja) | 並列計算システム、マイグレーション方法、及びマイグレーションプログラム | |
CN113722131A (zh) | 用于促进存储设备中的快速崩溃恢复的方法和系统 | |
JP4792065B2 (ja) | データ記憶方法 | |
US11687359B2 (en) | Hybrid memory management apparatus and method for many-to-one virtualization environment | |
JP7118827B2 (ja) | 情報処理装置、メモリ制御方法およびプログラム | |
Xiang et al. | MATRYOSHKA: Non-Exclusive Memory Tiering via Transactional Page Migration |
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 |