CN109857561A - 一种内存管理方法及计算设备 - Google Patents

一种内存管理方法及计算设备 Download PDF

Info

Publication number
CN109857561A
CN109857561A CN201910111354.6A CN201910111354A CN109857561A CN 109857561 A CN109857561 A CN 109857561A CN 201910111354 A CN201910111354 A CN 201910111354A CN 109857561 A CN109857561 A CN 109857561A
Authority
CN
China
Prior art keywords
memory
subgroup
interactive application
group
quota
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
CN201910111354.6A
Other languages
English (en)
Other versions
CN109857561B (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.)
Wuhan Technology Co Ltd
Original Assignee
Wuhan Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wuhan Technology Co Ltd filed Critical Wuhan Technology Co Ltd
Priority to CN201910111354.6A priority Critical patent/CN109857561B/zh
Publication of CN109857561A publication Critical patent/CN109857561A/zh
Application granted granted Critical
Publication of CN109857561B publication Critical patent/CN109857561B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开了一种内存管理方法,在计算设备中执行,该方法包括:对进程进行分组,其中,将对应于桌面环境的进程归入桌面环境组,将对应于交互应用的进程归入交互应用组;设置交互应用组的内存限额;根据内存限额来限制交互应用组中的进程的内存使用量,以优先满足桌面环境组中的进程的内存需求。本发明一并公开了相应的计算设备。

Description

一种内存管理方法及计算设备
技术领域
本发明涉及计算机资源管理技术领域,尤其涉及一种内存管理方法及计算设备。
背景技术
内存是计算机的重要组成部分,计算机中的任何程序都要加载到内存中才能运行。目前市面上的操作系统多为具有图形界面的桌面操作系统,且应用程序的种类和数量日益增多,导致计算机的内存往往不够用。
现代操作系统通常采用分页技术(Paging)来解决物理内存不足的问题:当物理内存不足时,将物理内存中的某些暂时用不到的数据转存至磁盘等外部存储设备的Swap分区中;当需要的时候,再将数据由Swap分区移至内存。但是,当桌面操作系统中同时打开多个应用程序(UI程序)时,可能会导致系统抖动(Thrashing,又称系统颠簸),即数据在内存与Swap分区之间频繁换进换出,严重影响应用程序的响应速度。另外,应用程序往往基于事件循环,会每隔几毫秒就激活一次,从而有非常多的进程一直处于活跃状态,导致系统进入抖动状态无法自动修复。在系统抖动状态下,桌面环境(Desktop Environment)的响应速度也会变慢,甚至无响应,导致用户无法在桌面上进行操作,难以通过手动关闭应用程序的方式来恢复响应。
发明内容
为此,本发明提供一种内存管理方法及计算设备,以力图解决或至少缓解上面存在的问题。
根据本发明的一个方面,提供一种内存管理方法,在计算设备中执行,包括:对进程进行分组,其中,将对应于桌面环境的进程归入桌面环境组,将对应于交互应用的进程归入交互应用组;设置所述交互应用组的内存限额;根据所述内存限额来限制交互应用组中的进程的内存使用量,以优先满足桌面环境组中的进程的内存需求。
可选地,在根据本发明的内存管理方法中,将所述交互应用组的内存限额设置为交互应用组实际使用的内存量与当前计算设备的剩余内存量之和。
可选地,在根据本发明的内存管理方法中,交互应用组包括至少一个子组,所述子组包括对应于同一个交互应用的至少一个进程;所述方法进一步包括:分别设置各个子组的内存限额,所述各个子组的内存限额之和等于所述交互应用组的内存限额。
可选地,在根据本发明的内存管理方法中,还包括:确定活跃应用和非活跃应用,其中,所述活跃应用为当前活动窗口所对应的交互应用,所述非活跃应用为除活跃应用之外的其他应用;增加所述活跃应用所对应的子组的内存限额。
可选地,在根据本发明的内存管理方法中,增加所述活跃应用所对应的子组的内存限额的步骤包括:若活跃应用所对应的子组的内存限额与该子组所实际使用的内存量之差小于第一阈值,且计算设备的剩余内存量大于第二阈值,则将活跃应用所对应的子组的内存限额更新为原内存限额与增量之和,其中,所述增量小于等于所述第二阈值。
可选地,在根据本发明的内存管理方法中,还包括:减小非活跃应用所对应的子组的内存限额。
可选地,在根据本发明的内存管理方法中,子组按照以下步骤创建:当用户在桌面上启动交互应用时,创建该交互应用所对应的子组;将用户使用该交互应用的过程中所启动的进程归入该子组中。
可选地,在根据本发明的内存管理方法中,还包括:设置所述桌面环境组中的进程的优先级;当计算设备的剩余内存量小于第三阈值时,回收优先级低的进程。
根据本发明的一个方面,提供一种计算设备,包括:至少一个处理器;和存储有程序指令的存储器,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如上所述的内存管理方法的指令。
根据本发明的又一个方面,提供一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如上所述的内存管理方法。
根据本发明的技术方案,对进程进行分组(cgroup)管理,将桌面环境进程归入桌面环境组,将交互应用的进程归入交互应用组,通过设置交互应用组的内存限额,使得在计算设备的内存不足时,限制交互应用进程的内存使用,优先满足桌面环境进程的内存需求。本发明的技术方案对桌面环境进程进行了额外的保护,从而使计算设备在内存不足时仍可以提供桌面操作响应,提高了用户体验。
进一步地,本发明的技术方案还将交互应用组划分为多个子组,每个子组对应于一个交互应用,并分别设置各子组的内存限额。通过设置每个子组的内存限额,便可以控制单个交互应用的内存使用情况。这样,可以动态获取当前用户正在操作的应用(即活跃应用),并增加该应用所对应的子组的内存限额,即便在计算设备内存不足时,仍可以保证用户当前操作的应用能够得到足够的内存资源从而进行快速响应。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个实施例的计算设备100的示意图;
图2示出了根据本发明一个实施例的内存管理方法200的流程图;
图3示出了根据本发明一个实施例的进程分组情况的示意图;
图4示出了根据本发明一个实施例的内存管理状态的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明的内存管理方法在计算设备中执行。计算设备例如可以是笔记本电脑、桌面计算机等个人配置的计算机,也可以是Web服务器、应用服务器、数据库服务器等服务器,还可以是手机、平板电脑、多媒体设备等,但不限于此。
图1示出了根据本发明一个实施例的计算设备100的示意图。需要说明的是,图1所示的计算设备100仅为一个示例,在实践中,用于实施本发明的内存管理方法的计算设备可以是任意型号的设备,其硬件配置情况可以与图1所示的计算设备100相同,也可以不同。实践中用于实施本发明的内存管理方法的计算设备可以对图1所示的计算设备100的硬件组件进行增加或删减,本发明对计算设备的具体硬件配置情况不做限制。
如图1所示,在基本的配置102中,计算设备100典型地包括系统存储器106和一个或者多个处理器104。存储器总线108可以用于在处理器104和系统存储器106之间的通信。
取决于期望的配置,处理器104可以是任何类型的处理,包括但不限于:微处理器(μP)、微控制器(μC)、数字信息处理器(DSP)或者它们的任何组合。处理器104可以包括诸如一级高速缓存110和二级高速缓存112之类的一个或者多个级别的高速缓存、处理器核心114和寄存器116。示例的处理器核心114可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器118可以与处理器104一起使用,或者在一些实现中,存储器控制器118可以是处理器104的一个内部部分。
取决于期望的配置,系统存储器106可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。系统存储器106可以包括操作系统120、一个或者多个程序122以及程序数据124。在一些实施方式中,程序122可以布置为在操作系统上由一个或多个处理器104利用程序数据124执行指令。
计算设备100还可以包括有助于从各种接口设备(例如,输出设备142、外设接口144和通信设备146)到基本配置102经由总线/接口控制器130的通信的接口总线140。示例的输出设备142包括图形处理单元148和音频处理单元150。它们可以被配置为有助于经由一个或者多个A/V端口152与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口144可以包括串行接口控制器154和并行接口控制器156,它们可以被配置为有助于经由一个或者多个I/O端口158和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备146可以包括网络控制器160,其可以被布置为便于经由一个或者多个通信端口164与一个或者多个其他计算设备162通过网络通信链路的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。
在根据本发明的计算设备100中,应用122包括用于执行内存管理方法200的指令,该指令可以指示处理器104执行本发明的内存管理方法200,对桌面环境进程进行额外的保护,从而使计算设备在内存不足时仍可以提供桌面操作响应。
图2示出了根据本发明一个实施例的内存管理方法200的流程图,方法200适于在计算设备(例如前述计算设备100)中执行。如图2所示,方法200始于步骤S210。
在步骤S210中,对进程进行分组,其中,将对应于桌面环境的进程归入桌面环境组,将对应于交互应用的进程归入交互应用组。
进程(Process)是计算设备中的程序关于某数据集合上的一次运行活动,即进程是正在运行的程序实体,是系统进行资源分配和调度的基本单位。在本发明的实施例中,计算设备中的进程按照功能划分为以下三类:
1、桌面环境进程,即对应于桌面环境的进程。桌面环境(Desktop Environment,简称DE)泛指由桌面的背景图片、桌面的快捷方式、桌面的DIY小部件等组成的一个直观的视觉环境。桌面环境例如可以是DDE(Deepin Desktop Environment,深度桌面环境)、KDE(KDesktop Environment,K桌面环境)、GNOME(The GNU Network Object ModelEnvironment,GNU网络对象模型环境)等,但不限于此。
一个典型的桌面环境通常包括任务栏(Docker)、启动器(Launcher)、声音服务(PulseAudio),网络服务(NetworkManager)等多种组件,相应地,在启动桌面环境后,计算设备中运行着用于执行任务栏、启动器等桌面组件任务的进程。
2、交互应用进程,即对应于交互应用的进程。交互应用(UI App)为具有用户界面(User Interface,简称UI)的应用(Application,简称App),其由用户通过桌面环境启动,可与用户进行交互以实现用户所期望的功能。交互应用例如可以是Chrome浏览器、QQ、WPS、Gedit等应用,但不限于此。
交互应用进程为交互应用的运行实例,是交互应用的一次动态执行。当用户使用某一应用程序时,计算设备将启动至少一个对应于该应用程序的进程,以执行该应用程序的相关任务。例如,当用户启动Chrome浏览器后,计算设备中运行着用于执行Chrome浏览器任务的进程。
3、系统进程,即对应于系统组件的进程。系统组件为操作系统必须的系统程序,其通常在后台运行,以便支持其他程序,尤其是底层(接近硬件)程序。
在Linux操作系统中,系统组件包括图像服务器(Xorg)、高级进程间通讯服务(Dbus-daemon)、窗口管理器(WM)等,相应地,计算设备中运行着这些系统组件所对应的进程。
保证桌面环境的核心组件进程的运行状态是保证桌面响应速度的前提。通常地,桌面环境的核心组件占用的内存资源较少且比较稳定。而用户所启动的交互应用的数量以及各交互应用进程所占用的内存资源是不确定的,且波动较大,当交互应用进程的数量较多时,其所占用的内存通常较多,可能会造成物理内存不足,致使桌面响应速度变慢或无响应,严重影响用户操作。因此,需要提供一种内存管理方法,来对计算设备中的进程所占用的内存资源进行调度、管理,以保证桌面响应速度。
需要说明的是,本发明旨在提供一种能够保证桌面响应速度的内存管理方法,由于系统组件通常在后台运行,不涉及用户交互,因此,在本发明的实施例中,侧重描述桌面环境进程与交互应用进程这两种涉及用户交互的内存管理方法,而未过多描述系统进程。不过,本领域技术人员可以理解,由于所有的系统进程累计使用的内存比例较低,且这些进程的响应时间比较重要,因此可以采取强制保障系统进程的策略,即,本发明的内存管理方法200可以在保证系统进程的内存需求的前提下执行。
在步骤S210中,对计算设备中运行的进程进行分组,将对应于桌面环境的进程归入桌面环境组,将对应于交互应用的进程归入交互应用组。通过将桌面环境进程与交互应用进程分别分组,可以实现对桌面环境进程与交互应用进程所占用资源的分别管理。
根据一种实施例,在Linux操作系统中,可以采用Cgroup机制来对进程进行分组。Cgroup为每个进程组都指定一组访问资源的行为,这些行为限制了该组进程对资源(例如内存、CPU等)的访问。
根据一种实施例,可以将交互应用组中的进程进一步划分为多个子组,每个子组对应于一个交互应用。经过划分,交互应用组将包括至少一个子组,每个子组中包括对应于同一个交互应用的至少一个进程。例如,在某一时刻,计算设备中运行有Chrome浏览器、QQ、WPS三个应用,那么,交互应用组Group3进一步被划分为对应于Chrome浏览器的子组Group31、对应于QQ的子组Group32和对应于WPS的子组Group33。子组Group31包括Chrome浏览器的所有进程,子组Group32包括QQ的所有进程,子组Group33包括WPS的所有进程。
需要说明的是,交互应用组可以在启动桌面环境、但未启动任何交互应用时预先创建,也可以在用户启动第一个交互应用时创建。
根据一种实施例,当用户在桌面环境上启动第一个交互应用时,创建交互应用组,并在该交互应用组中创建该交互应用所对应的子组;将用户使用该交互应用的过程中所启动的进程归入该子组中。随后,用户每启动一个新的交互应用,均在交互应用组中创建该交互应用所对应的子组,将用户使用该交互应用的过程中所启动的进程归入该子组中。
例如,用户在桌面环境上启动的第一个应用为Chrome浏览器,此时,创建交互应用组Group3,并在Group3中进一步创建子组Group31,将本次以及后续启动的Chrome浏览器的所有进程均归入子组Group31中。随后,用户又启动了QQ,此时,在Group3中进一步创建子组Group32,将本次以及后续启动的QQ的所有进程均归入子组Group32中。
图3示出了根据本发明一个实施例的进程分组情况的示意图。如图3所示,计算设备中的进程被划分为桌面环境组Group1、系统组Group2、交互应用组Group3三个大组。其中,桌面环境组Group1包括已启动的所有桌面环境进程,例如任务栏进程、启动器进程、声音服务进程等,但不限于此。系统组Group2包括已启动的所有系统进程,例如图像服务器、窗口管理器、高级进程间通讯服务等,但不限于此。交互应用组Group3包括已启动的所有交互应用进程,交互应用组进一步被划分为多个子组,每个子组包括对应于同一个应用的至少一个进程。例如,交互应用组Group3进一步被划分为对应于Chrome浏览器的子组Group31、对应于QQ的子组Group32、对应于WPS的子组Group33和对应于Gedit的子组Group34。子组Group31包括Chrome浏览器的所有进程,子组Group32包括QQ的所有进程,子组Group33包括WPS的所有进程,子组Group34包括Gedit的所有进程。
随后,在步骤S220中,设置交互应用组的内存限额。
通过设置交互应用组的内存限额,可以在计算设备的内存不足时,限制交互应用进程的内存使用,以优先满足桌面环境进程的内存需求。本发明的技术方案对桌面环境进程进行了额外的保护,从而使计算设备在内存不足时仍可以提供桌面操作响应,提高了用户体验。
需要说明的是,在本发明的实施例中,分组的内存限额用于限制该分组的内存使用量,本发明对内存限额的种类以及内存限额限制分组内存使用量的具体方式不做限制。例如,内存限额可以是硬限额,也可以是软限额,但不限于此。
硬限额(hard limit)是一个硬性标准,当某一分组设置了硬限额后,该分组实际使用的内存量不可超过该硬限额。若该分组实际使用的内存量已达到硬限额,且其中的进程还继续申请内存,内核会将物理内存中的数据移动到Swap空间中;若Swap空间也不足,则内核将杀掉该分组中继续申请内存的进程。在Cgroup机制中,可以通过写分组的memory.limit_in_bytes文件来设置该分组的硬限额。
软限额(soft limit)是一个弹性标准,当某一分组设置了软限额后,若计算设备的内存充裕,该软限额将不起任何限制作用;若计算设备的内存不足,则内核会尽量将该分组的内存限制在该软限额之下(内核会尽量,但不100%保证),优先回收超过软限额的进程所占用的内存,以使该分组实际使用的内存量向设定的软限额靠拢。在Cgroup机制中,可以通过写分组的memory.soft_limit_in_bytes文件来设置该分组的软限额。
本领域技术人员可以自行选择将内存限额设置为硬限额或软限额,本发明对此不做限制。
根据一种实施例,将交互应用组的内存限额设置为交互应用组实际使用的内存量与当前计算设备的剩余内存量之和。
具体地,在Linux系统中,可以根据Cgroup中的memory.usage_in_bytes字段获取某一分组当前实际使用的内存量(不含swap类型),如此,可以获取交互应用组实际使用的内存量M(UI),桌面环境组实际使用的内存量M(DE)以及系统组实际使用的内存量M(sys)。相应地,计算设备的剩余内存量为计算设备的物理内存总量与桌面环境组、系统组、交互应用组所实际使用的内存量的差。将计算设备的剩余内存量记为M(rem),将计算设备的物理内存总量记为M,则有M(rem)=M-M(UI)-M(DE)-M(sys)。相应地,交互应用组的内存限额为M(UI)+M(rem)=M-M(DE)-M(sys)。
根据一种实施例,在设置了交互应用组的内存限额的基础上,进一步分别设置各个子组的内存限额,各子组的内存限额之和等于交互应用组的内存限额。通过设置每个子组的内存限额,便可以控制单个交互应用的内存使用情况。本领域技术人员可以自行设置各个子组的内存限额,本发明对各子组的内存限额的设置方法不做限制。
根据一种实施例,可以将一个子组的内存限额设置为该子组实际使用的内存量与当前计算设备的剩余内存量与交互应用组所包括的子组的数量之商的和。例如,交互应用组Group3包括分别对应于交互应用App1、App2、App3的三个子组Group31、Group32、Group33,这三个子组实际使用的内存量分别为M(UI_App1)、M(UI_App2)、M(UI_App3)。那么,这三个子组的内存限额分别为M(UI_App1)+M(rem)/3、M(UI_App2)+M(rem)/3、M(UI_App3)+M(rem)/3。该设置子组内存限额的方法将所有子组等同对待,但是,由于各交互应用所需要的内存量不同且随时间变化,因此按照这种方法为各子组所分配的内存限额可能实践效果欠佳。
根据另一种实施例,将已启动的交互应用划分为活跃应用和非活跃应用,活跃应用为当前活动窗口所对应的交互应用,即用户当前正在使用的交互应用;非活跃应用为除活跃应用之外的其他应用。例如,在X11系统中,可以通过读取RootWindow的_NET_ACTIVE_WINDOW属性值来确定活跃应用,相应地,其他已启动的应用为非活跃应用。在确定了活跃应用后,增加活跃应用所对应的子组的内存限额,当剩余内存量不足时,还需要减小非活跃应用所对应的子组的内存限额,以保证用户当前操作的应用能够得到足够的内存资源从而进行快速响应。
例如,如图3所示,活跃应用为Chrome浏览器,则相应地增加Chrome浏览器所对应的子组Group31的内存限额,同时还可以减小非活跃应用QQ、WPS、Gedit等的内存限额,以保证当前用户正在操作的Chrome浏览器能够进行快速响应。
需要说明的是,本领域技术人员可以自行设置活跃应用所对应的子组的内存限额的增加方法,本发明对此不做限制。根据一种实施例,活跃应用所对应的子组的内存限额可以按照以下方法设置:若活跃应用所对应的子组的内存限额与该子组所实际使用的内存量之差小于第一阈值,且计算设备的剩余内存量大于第二阈值,则将活跃应用所对应的子组的内存限额更新为原内存限额与增量之和,其中,增量小于等于上述第二阈值。
需要说明的是,第一阈值、第二阈值、增量的值可以由本领域技术人员自行设置,本发明对此不做限制。在一个实施例中,可以将第一阈值设置为1M Bytes,第二阈值和增量均设置为2M Bytes,即,当活跃应用App1所对应的子组Group31的当前的内存限额limit_now与该子组所实际使用的内存量M(UI_App1)之差小于1M,且计算设备的剩余内存量M(rem)大于2M时,将Group31的内存限额更新为limit_now+2M。
需要说明的是,交互应用组、以及交互应用组中的各子组的内存限额并非一成不变,而是可以按照预设的频率来进行动态调整。例如,每隔1秒种更新一次交互应用组以及各子组的内存限额,或每隔5秒钟更新一次交互应用组以及各子组的内存限额,等等。本发明对内存限额的调整频率不做限制。
在设置了交互应用组的内存限额后,即可执行步骤S230。在步骤S230中,根据内存限额来限制交互应用组中的进程的内存使用量,以优先满足桌面环境组中的进程的内存需求。
进一步地,在设置了交互应用中各子组的内存限额后,步骤S230还可以根据各子组的内存限额来控制各子组的内存使用量,以保证活跃应用能够得到足够的内存资源从而进行快速响应。
根据一种实施例,除了通过设置内存限额的方式来保证桌面环境以及活跃应用的响应速度之外,还可以通过设置桌面环境进程的优先级来进一步保证桌面环境以及活跃应用的响应速度。例如,设置桌面环境组中的进程的优先级,当计算设备的剩余内存量小于第三阈值时,回收优先级低的进程,以释放内存,满足优先级高的桌面环境进程以及活跃应用进程的内存需求。第三阈值的值可以由本领域技术人员自行设置,本发明对此不做限制。例如,可以将第三阈值设置为0。
桌面环境进程的优先级可以由本领域技术人员自行设置,本发明对此不做限制。根据一种实施例,OSD(On Screen Display,屏幕显示)、启动器等组件仅在用户需要时临时激活,而其他大部分时间都不需要激活。例如,当用户按下大写锁定键或解除大写锁定时,OSD组件被激活以在桌面上显示相应的提示信息(例如,一个闭合或打开的锁的图标),在其他时间,OSD组件均无需激活;当用户点击桌面上的开始菜单时,启动器组件被激活,而在其他时间,启动器组件无需激活。因此,可以将OSD、启动器等组件的进程设置为低优先级,当内存不足时,优先回收这些进程,以释放内存。
本发明的技术方案优先保证桌面环境进程所需要的内存,使得桌面环境组件在内存不足时依旧可以正常响应,从而使用户可以在桌面上进行成正的应用切换、关闭等操作。此外,本发明还优先保证活跃应用所需要的内存,在内存不足时,仍可以保证用户当前操作的应用能够得到足够的内存资源从而进行快速响应。
图4示出了根据本发明一个实施例的内存管理状态的示意图。图4中的左数第一列示出了进程的分组情况,DE表示桌面环境组,编号10、11、14、17、18、2、3、5分别为交互应用组中的子组,uiapps表示交互应用组。图4中的第2至第6列分别为硬限额、软限额、实际使用的内存量、缓存空间大小、Swap空间大小。图4中,活跃应用为编号为11的Chrome浏览器,经过实践,在采用了本发明的内存管理方法后,2G内存的Deepin操作系统桌面,在Chrome浏览器中打开20多个标签页以及WPS等耗内存的应用后,仍可以正常响应。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、U盘、软盘、CD-ROM或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的内存管理方法。
以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。
在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的而非限制性的,本发明的范围由所附权利要求书限定。

Claims (10)

1.一种内存管理方法,在计算设备中执行,所述方法包括:
对进程进行分组,其中,将对应于桌面环境的进程归入桌面环境组,将对应于交互应用的进程归入交互应用组;
设置所述交互应用组的内存限额;
根据所述内存限额来限制交互应用组中的进程的内存使用量,以优先满足桌面环境组中的进程的内存需求。
2.如权利要求1所述的方法,其中,将所述交互应用组的内存限额设置为交互应用组实际使用的内存量与当前计算设备的剩余内存量之和。
3.如权利要求1或2所述的方法,其中,所述交互应用组包括至少一个子组,所述子组包括对应于同一个交互应用的至少一个进程;所述方法进一步包括:
分别设置各个子组的内存限额,所述各个子组的内存限额之和等于所述交互应用组的内存限额。
4.如权利要求3所述的方法,还包括:
确定活跃应用和非活跃应用,其中,所述活跃应用为当前活动窗口所对应的交互应用,所述非活跃应用为除活跃应用之外的其他应用;
增加所述活跃应用所对应的子组的内存限额。
5.如权利要求4所述的方法,其中,所述增加所述活跃应用所对应的子组的内存限额的步骤包括:
若活跃应用所对应的子组的内存限额与该子组所实际使用的内存量之差小于第一阈值,且计算设备的剩余内存量大于第二阈值,则
将活跃应用所对应的子组的内存限额更新为原内存限额与增量之和,其中,所述增量小于等于所述第二阈值。
6.如权利要求4所述的方法,还包括:减小非活跃应用所对应的子组的内存限额。
7.如权利要求3-6中任一项所述的方法,其中,所述子组按照以下步骤创建:
当用户在桌面上启动交互应用时,创建该交互应用所对应的子组;
将用户使用该交互应用的过程中所启动的进程归入该子组中。
8.如权利要求1-7中任一项所述的方法,还包括:
设置所述桌面环境组中的进程的优先级;
当计算设备的剩余内存量小于第三阈值时,回收优先级低的进程。
9.一种计算设备,包括:
至少一个处理器;和
存储有程序指令的存储器,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如权利要求1-8中任一项所述的内存管理方法的指令。
10.一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如权利要求1-8中任一项所述的内存管理方法。
CN201910111354.6A 2019-02-12 2019-02-12 一种内存管理方法及计算设备 Active CN109857561B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910111354.6A CN109857561B (zh) 2019-02-12 2019-02-12 一种内存管理方法及计算设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910111354.6A CN109857561B (zh) 2019-02-12 2019-02-12 一种内存管理方法及计算设备

Publications (2)

Publication Number Publication Date
CN109857561A true CN109857561A (zh) 2019-06-07
CN109857561B CN109857561B (zh) 2021-03-26

Family

ID=66897806

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910111354.6A Active CN109857561B (zh) 2019-02-12 2019-02-12 一种内存管理方法及计算设备

Country Status (1)

Country Link
CN (1) CN109857561B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110489232A (zh) * 2019-08-12 2019-11-22 新华三技术有限公司成都分公司 资源隔离方法、装置、电子设备及存储介质
CN111949492A (zh) * 2020-08-20 2020-11-17 深圳市锐尔觅移动通信有限公司 系统资源获取方法、装置及终端设备

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7818275B2 (en) * 1999-02-08 2010-10-19 Accenture Global Services Gmbh Runtime program regression analysis tool for a simulation engine
CN103577267A (zh) * 2012-08-03 2014-02-12 上海博泰悦臻电子设备制造有限公司 车载设备的资源分配方法及装置
CN103853610A (zh) * 2012-12-07 2014-06-11 腾讯科技(深圳)有限公司 资源优化方法及装置
CN106407010A (zh) * 2016-09-06 2017-02-15 北京珠穆朗玛移动通信有限公司 一种内存管理方法及移动终端
CN106776036A (zh) * 2016-12-30 2017-05-31 广东欧珀移动通信有限公司 一种资源分配方法及装置
CN108108227A (zh) * 2018-01-04 2018-06-01 郑州云海信息技术有限公司 一种云计算管理系统及其管理虚拟机的方法
CN108205474A (zh) * 2017-08-23 2018-06-26 珠海市魅族科技有限公司 内存管理方法、终端设备、计算机装置以及可读存储介质
CN108228344A (zh) * 2017-08-22 2018-06-29 珠海市魅族科技有限公司 多进程内存处理方法及装置、计算机装置及可读存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7818275B2 (en) * 1999-02-08 2010-10-19 Accenture Global Services Gmbh Runtime program regression analysis tool for a simulation engine
CN103577267A (zh) * 2012-08-03 2014-02-12 上海博泰悦臻电子设备制造有限公司 车载设备的资源分配方法及装置
CN103853610A (zh) * 2012-12-07 2014-06-11 腾讯科技(深圳)有限公司 资源优化方法及装置
CN106407010A (zh) * 2016-09-06 2017-02-15 北京珠穆朗玛移动通信有限公司 一种内存管理方法及移动终端
CN106776036A (zh) * 2016-12-30 2017-05-31 广东欧珀移动通信有限公司 一种资源分配方法及装置
CN108228344A (zh) * 2017-08-22 2018-06-29 珠海市魅族科技有限公司 多进程内存处理方法及装置、计算机装置及可读存储介质
CN108205474A (zh) * 2017-08-23 2018-06-26 珠海市魅族科技有限公司 内存管理方法、终端设备、计算机装置以及可读存储介质
CN108108227A (zh) * 2018-01-04 2018-06-01 郑州云海信息技术有限公司 一种云计算管理系统及其管理虚拟机的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
陈晓: "基于linuxContainer的Android移动终端虚拟化", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110489232A (zh) * 2019-08-12 2019-11-22 新华三技术有限公司成都分公司 资源隔离方法、装置、电子设备及存储介质
CN111949492A (zh) * 2020-08-20 2020-11-17 深圳市锐尔觅移动通信有限公司 系统资源获取方法、装置及终端设备
CN111949492B (zh) * 2020-08-20 2023-01-06 深圳市锐尔觅移动通信有限公司 系统资源获取方法、装置及终端设备

Also Published As

Publication number Publication date
CN109857561B (zh) 2021-03-26

Similar Documents

Publication Publication Date Title
EP3842905B1 (en) Icon display method and apparatus, terminal and storage medium
AU2013389985B2 (en) User interface elements for multiple displays
EP2656196B1 (en) Customization of an immersive environment
JP7138804B2 (ja) インタフェース表示方法及びその装置、端末並びにコンピュータプログラム
KR102108583B1 (ko) 인스턴스화가능한 제스처 객체
CN107463400B (zh) 移动应用的热更新方法及终端设备
US11681507B2 (en) Composable context menus
CN106201167A (zh) 终端屏幕的分屏显示方法、装置及终端
US20180285098A1 (en) Control method
US10915303B2 (en) Run time integrated development and modification system
CN103019840B (zh) 用于设置桌面的方法和装置
CN109857561A (zh) 一种内存管理方法及计算设备
CN113296651A (zh) 一种窗口管理方法及计算设备
CN104778075A (zh) Android系统中native层调用Java层API的方法和装置
CN104216781A (zh) 显存分配方法及系统
CN107391914B (zh) 一种参数显示方法、装置及设备
EP4012542A1 (en) Virtual key position adjusting method and apparatus, and device, storage medium and program product
EP2987076B1 (en) Application-to-application launch windowing
CN112221122B (zh) 可替换的技能合成交互方法、系统、电子装置和存储介质
CN110368683B (zh) 一种游戏控制方法、装置及计算机可读存储介质
WO2017078132A1 (ja) モバイル端末およびアプリケーションプログラム
CN106874085A (zh) 一种自启应用的管理方法及终端
CN110442380A (zh) 一种数据预热方法及计算设备
US20140282128A1 (en) System and Method for a User Interface Controller for Mandatory and Shared User Interface Functions
CN110515674A (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