CN111880991B - 内存优化方法、装置、电子设备及计算机可读存储介质 - Google Patents

内存优化方法、装置、电子设备及计算机可读存储介质 Download PDF

Info

Publication number
CN111880991B
CN111880991B CN202010719386.7A CN202010719386A CN111880991B CN 111880991 B CN111880991 B CN 111880991B CN 202010719386 A CN202010719386 A CN 202010719386A CN 111880991 B CN111880991 B CN 111880991B
Authority
CN
China
Prior art keywords
memory
target
operating system
degree
thrashing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010719386.7A
Other languages
English (en)
Other versions
CN111880991A (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.)
Guangdong Oppo Mobile Telecommunications Corp Ltd
Original Assignee
Guangdong Oppo Mobile Telecommunications Corp 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 Guangdong Oppo Mobile Telecommunications Corp Ltd filed Critical Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority to CN202010719386.7A priority Critical patent/CN111880991B/zh
Publication of CN111880991A publication Critical patent/CN111880991A/zh
Application granted granted Critical
Publication of CN111880991B publication Critical patent/CN111880991B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请实施例公开了一种内存优化方法、装置、电子设备及计算机可读存储介质。该方法包括:对操作系统的空闲内存进行监控;当检测到当前的空闲内存低于第一阈值时,确定所述操作系统的内存颠簸程度;若所述内存颠簸程度大于第二阈值,则根据杀进程规则进行内存回收。上述内存优化方法、装置、电子设备及计算机可读存储介质,能够优化内存回收机制,提高了电子设备的使用性能。

Description

内存优化方法、装置、电子设备及计算机可读存储介质
技术领域
本申请涉及计算机技术领域,具体涉及一种内存优化方法、装置、电子设备及计算机可读存储介质。
背景技术
电子设备的内存空间通常是有限的,在电子设备使用一段时间后,后台会积累较多的进程,因此会占用一定的内存空间。当电子设备的内存出现不足时,可对后台运行的进程进行查杀,释放后台进程占用的内存。为了提高电子设备的使用性能,如何优化电子设备的内存回收机制成为了当下重要的研究问题。
发明内容
本申请实施例公开了一种内存优化方法、装置、电子设备及计算机可读存储介质,能够优化内存回收机制,提高了电子设备的使用性能。
本申请实施例公开了一种内存优化方法,包括:
对操作系统的空闲内存进行监控;
当检测到当前的空闲内存低于第一阈值时,确定所述操作系统的内存颠簸程度;
若所述内存颠簸程度大于第二阈值,则根据杀进程规则进行内存回收。
本申请实施例公开了一种内存优化装置,包括:
内存监控模块,用于对操作系统的空闲内存进行监控;
程度确定模块,用于当检测到当前的空闲内存低于第一阈值时,确定所述操作系统的内存颠簸程度;
内存回收模块,用于若所述内存颠簸程度大于第二阈值,则根据杀进程规则进行内存回收。
本申请实施例公开了一种电子设备,包括存储器及处理器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器实现如上所述的方法。
本申请实施例公开了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的方法。
本申请实施例公开的内存优化方法、装置、电子设备及计算机可读存储介质,对操作系统的空闲内存进行监控,当检测到当前的空闲内存低于第一阈值时,确定操作系统的内存颠簸程度,若内存颠簸程度大于第二阈值,则根据杀进程规则进行内存回收,能够在操作系统出现内存颠簸时,对内存进行回收,从而缓解由于内存颠簸导致的卡顿等现象,优化了内存回收机制,且提高了电子设备的使用性能。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一个实施例中电子设备的软件架构图;
图2为一个实施例中内存优化方法的流程图;
图3为一个实施例中根据内存颠簸程度杀进程的流程图;
图4为一个实施例中基于不同内存颠簸程度采用不同杀进程策略的示意图;
图5为另一个实施例中内存优化方法的流程图;
图6为一个实施例中内存优化装置的框图;
图7为一个实施例中电子设备的结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请实施例及附图中的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
可以理解,本申请所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但这些元件不受这些术语限制。这些术语仅用于将第一个元件与另一个元件区分。举例来说,在不脱离本申请的范围的情况下,可以将第一阈值称为第二阈值,且类似地,可将第二阈值称为第一阈值。第一阈值和第二阈值两者都是阈值,但其不是相同的阈值。
目前的电子设备在进行内存优化时,通常是需要在空闲内存和文件页低于一定的值时,会触发杀进程回收内存的机制,选择后台运行的进程杀掉,来达到回收内存的目的。其中,文件页也属于操作系统中可用内存的一部分,是硬盘上的一块空间,当物理内存被占用时,可将物理内存中存储的数据写入文件页中存储,以保证有足够的物理内存给运行的应用程序使用。
以安卓(Android)操作系统为例,安卓中的杀进程回收内存的机制为LMK(LowMemory Killer),当安卓系统检测到空闲内存以及文件页低于一定的值时,就会触发LMK,并选择后台运行的进程杀掉,杀掉的进程会结束在系统中的运行。
目前LMK选择杀进程的策略是在空闲内存和文件页低于不同的阈值时,可以选择杀的进程的优先级范围不同,其中,进程的优先程可使用adj表示,adj是系统内核分配给每个进程的值,用于表示进程的优先级,通常adj的范围为-1000~1000,adj越大,表示进程的优先级越低,adj越小,表示进程的优先级越高。示例性地,空间内存和文件页的阈值与选择杀掉的进程的adj值的对应关系可如表1所示。
表1
Figure BDA0002599407320000031
Figure BDA0002599407320000041
以上述表1为例,当空闲内存和文件页均小于320MB时,会选择adj在906以上的进程杀掉;当空闲内存和文件页均小于220MB时,会选择adj在900以上的进程杀掉;当空闲内存和文件页均小于120MB时,会选择adj在300以上的进程杀掉;当空闲内存和文件页均小于100MB时,会选择adj在200以上的进程杀掉;当空闲内存和文件页均小于90MB时,会选择adj在100以上的进程杀掉;当空闲内存和文件页均小于70MB时,会选择adj在0以上的进程杀掉。Adj越大,表示进程的优先级越低,越容易被杀。
目前的相关技术中考虑了空闲内存和文件页的情况,根据空闲内存和文件页的实际情况决定是否进行杀进程,但是可能出现文件页大于阈值时,不会选择进程杀掉,以表1中的数据为例,文件页大于320MB时不会选择进程杀掉,如果此时操作系统中发生了比较严重的内存颠簸,会频繁地进行页面回收又加载,由于输入/输出(Input/Output,I/O)的性能相对较慢,会使得系统性能急剧下降,可能导致出现使用卡顿等情况。目前的技术中电子设备无法主动识别系统的内存颠簸情况,无法快速缓解内存颠簸造成的使用卡顿等情况。
本申请实施例提供一种内存优化方法、装置、电子设备及计算机可读存储介质,电子设备能够主动识别操作系统中发生的内存颠簸,并根据内存颠簸程度自动采取杀进程规则进行内存回收,可快速缓解内存颠簸造成的使用卡顿等情况,确定操作系统的使用流畅,提高了电子设备的使用性能。
图1为一个实施例中电子设备的软件架构图。分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。如图1所示,在一些实施例中,将Android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和系统库,以及内核层。
应用程序层可以包括一系列应用程序包。应用程序层可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序,但不限于此。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。可选地,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。
其中,窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。该数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。电话管理器用于提供电子设备100的通信功能。例如通话状态的管理(包括接通,挂断等)。资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
Android Runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。其中,核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(例如:OpenGL ES),2D(2-Dimensiona,二维)图形引擎(例如:SGL)等。其中,表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D(3-Dimensiona,三维)图层的融合。媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4(MovingPictures Experts Group-4,动态影像专家组-4),H.264,MP3(Moving Picture ExpertsGroup Audio Layer III,动态影像专家压缩标准音频层面3),AAC(Advanced AudioCoding,高级音频编码),JPEG(Joint Photographic Experts Group,联合图像专家组),PNG(Portable Network Graphics,便携式网络图形)等。三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。2D图形引擎是2D绘图的绘图引擎。
内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。
结合图1中的软件架构,示例性地说明电子设备的软件工作流程。当应用程序运行时,可在应用程序框架层创建一个或多个Activity(活动),每个应用程序可运行虚拟机中,虚拟机中每个运行实例可分别对应内核层的一个进程,一个应用程序的一个或多个Activity可运行在同一个进程中,也可运行在不同的进程中。当内核层检查到空闲内存及文件页不足时,可选择后台运行的进程杀掉,以对内存回收。在本申请实施例中,操作系统可对内存的使用情况进行监控,并在检测到空闲内存低于第一阈值时,确定操作系统的内存颠簸程度,若该内存颠簸程度大于第二阈值,则根据杀进程规则进行内存回收。可不再考虑空闲内存和文件页与进程的adj值之间的对应关系,也即,可不再考虑原有的LMK机制,而是按照操作系统的内存颠簸程度进行内存回收。
如图2所示,在一个实施例中,提供一种内存优化方法,该方法可适用于手机、智能穿戴设备、平板电脑等电子设备,本申请实施例不做限定。该方法可包括以下步骤:
步骤210,对操作系统的空闲内存进行监控。
操作系统是电子设备中管理硬件与软件资源的计算机程序。电子设备的应用程序运行时,可向操作系统申请内存资源,操作系统可向运行该应用程序的进程分配所需的内存,可选地,操作系统可包括但不限于安卓操作系统、Linux操作系统、IOS操作系统等中的任一种。当应用程序退出运行时,通常而言,应用程序从前台运行变为后台运行模式,应用程序的进程并不会释放其占用的内存,因此系统内存会不断被占用,从而导致内存紧张,空闲内存不足。
作为一种实施方式,系统可实时或按照一定的时间周期(例如每隔1分钟、50秒等)监控内存的使用情况,可获取当前运行的各个应用分别占用的内存量,并根据当前运行的各个应用分别占用的内存量计算得到空闲内存,该空闲内存可指的是物理内存的可用空间。其中,当前运行的各个应用可包括当前在前台运行的应用程序及后台运行的应用程序。前台进程可理解为用户当前操作所必需的进程,例如在屏幕上运行的一个Activity对应的进程,或是当前正在向用户提供服务、当前正在进行消息传递等,均可认定为前台进程。后台进程指的是对用户不可见的Activity对应的进程,当用户触发应用的退出键或系统的返回键时,切换到其它应用或返回系统桌面,则可认定该应用的进程切换到后台运行。每个应用可包括一个或多个进程,可获取每个应用的应用标识,例如应用的编号等,并根据各个应用的应用标识查找到每个应用对应的进程,可读取每个应用对应的进程的内存文件,并从内存文件中获取相应的进程当前占用的内存量。可将当前运行的每个应用对应的进程所占用的内存进行累加,从而得到各个应用所占用的内存量。
可选地,电子设备的系统中除了运行应用进程外,为了保证系统正常运行,还需运行系统进程。可将当前运行的各个应用分别占用的内存量与系统进程所占用的内存量进行累加,可得到当前被占用的内存量,再将总内存减去当前被占用的内存量,从而可得到空闲内存。
可选地,也可直接读取当前运行的各个进程对应的内存文件,并从内存文件中获取相应的进程当前占用的内存量,再对所有当前运行的进程占用的内存进行累加,得到当前被占用的内存量。可将总内存减去当前被占用的内存量,从而可得到空闲内存。
作为另一种实施方式,系统监控内存的使用情况,也可扫描存储器上的各个存储块,并根据各个存储块的存储情况计算得到空闲内存。
可选地,系统也可在接收到内存分配请求时,再获取内存的使用情况,并在空闲内存不足时,触发杀进程回收内存的机制。可以理解地,检测系统当前的空闲内存的方式可以有多种,并不仅限于上述描述的几种方式。
在一些实施例中,操作系统也可在接收到内存分配请求时,再获取当前的空闲内存。可以理解地,监控系统当前的空闲内存的方式可以有多种,并不仅限于上述描述的几种方式。
步骤220,当检测到当前的空闲内存低于第一阈值时,确定操作系统的内存颠簸程度。
电子设备获取系统中当前的空闲内存后,可判断当前的空闲内存是否低于第一阈值,该第一阈值可指的是系统需要进行内存回收对应的阈值。可选地,第一阈值可根据实际需求进行设置,例如350MB、320MB等。
作为一种实施方式,第一阈值可以是操作系统中设定的水线,当空闲内存低于该水线时,则需要进行内存回收,以保证有足够的内存供前台运行的应用程序使用。水线(watermark)为内存管理区中的一个数组,内核中通常定义了三个水线数值来表示当前剩余的空闲内存,可选地,可分别包括watermark_HIGH(高水线)、watermark_LOW(低水线)及watermark_MIN(最小水线),其中,watermark_HIGH>watermark_LOW>watermark_MIN。上述的第一阈值可为watermark_LOW,当系统中的空闲内存低于watermark_LOW时,可确定需要进行内存回收。
当检测到当前的空闲内存低于第一阈值时,可触发内存颠簸计算模块,通过内存颠簸计算模块确定操作系统的内存颠簸程度。内存颠簸指的是存在较为严重的文件页频繁被回收又很快被重新访问的情况,当系统中频繁地进行页面回收又加载时,即可确认发生了内存颠簸,出现内存颠簸会导致系统性能急剧下降,出现使用卡顿等现象。由于电子设备在操作系统的空闲内存较低时,需要进行内存回收,之前从磁盘读取出来的文件缓存(即文件页)会被回收,当再要使用时再重新从磁盘中读取。因此,可在操作系统的空闲内存低于第一阈值时,确定操作系统的内存颠簸程度,对内存颠簸进行监控,防止出现由于内存颠簸导致性能下降的问题。
在一些实施例中,内存颠簸程度可采用多种方式进行表示,例如,可采用一定时间段内系统中被回收又被很快重新访问的文件页数量进行表示,也可采用一定时间段内系统中被回收又被很快重新访问的文件页数量占总体文件页数量的比例进行表示等,在此不作限定。
步骤230,若内存颠簸程度大于第二阈值,则根据杀进程规则进行内存回收。
电子设备在确定操作系统的内存颠簸程度后,可判断该内存颠簸程度是否大于第二阈值,若内存颠簸程度大于第二阈值,则可判定发生的内存颠簸会影响系统性能,需要采取相应的措施缓解内存颠簸的现象。可选地,第二阈值可根据实际需求进行设置,也可以是根据多次检测校验数据得到的。作为一种具体实施方式,电子设备可在每次检测到发生卡顿现象时获取相应的内存颠簸程度,并根据每次获取的出现卡顿时对应的内存颠簸程度,建立内存颠簸程度与卡顿程度之间的对应关系,并根据该对应关系确定第二阈值。第二阈值可以为不发生卡顿对应的最大内存颠簸程度。可选地,检测是否发生卡顿现象的方式可以是在界面上显示线形图,并检测图形处理器(Graphics Processing Unit,GPU)绘制每帧界面的时间,从而校验界面响应速度,若是界面响应速度小于预设的速度阈值,则可确定发生卡顿现象。可以理解地,也可采用其它方式校验系统是否发生卡顿,并不仅限于该方式。
若检测到内存颠簸程度大于第二阈值,则可从当前运行的后台进程中选择进程杀掉,释放杀掉的后台进程所占用的内存,以回收被杀掉的后台进程所占用的内存空间,增大空闲内存,防止出现由于内存颠簸导致系统性能下降的问题。
在一些实施例中,当内存颠簸程度越大时,可说明系统发生的内存颠簸对性能的影响越大,则可更加积极、有效率地杀进程,以快速缓解内存颠簸导致系统性能下降的问题。可选地,更加积极、有效率地杀进程,可以是选择优先级更高的后台进程杀掉,或是选择数量更多的后台进程杀掉等,在此不作限定。
当内存颠簸程度不大于第二阈值时,可说明发生的内存颠簸并不会导致系统性能下降,则可不杀进程,以防止随意杀进程导致用户需要使用的后台进程因为被杀而需要重新启动并加载,等待时间长,影响用户的使用。只有在内存颠簸真的影响到系统性能时,才杀进程,可以避免非必要地杀进程给用户的使用造成的不便。
作为一种实施方式,当内存颠簸程度不大于第二阈值时,可不杀进程,而是对内存中的匿名页进行压缩,并将压缩后的匿名页存储到交换分区,通过压缩内存实现内存回收。匿名页(Anonymous Page)可指的是应用程序动态分配的堆内存,由于匿名页中的数据可能还要再次被访问,因此不能直接将匿名页清除,可对匿名页压缩后并暂时存储到交换分区(如SWAP交换空间)中,从而释放出匿名页占用的一部分内存。可在对内存进行回收的同时,避免盲目杀进程,
在本申请实施例中,对操作系统的空闲内存进行监控,当检测到当前的空闲内存低于第一阈值时,确定操作系统的内存颠簸程度,若内存颠簸程度大于第二阈值,则根据杀进程规则进行内存回收,能够在操作系统出现内存颠簸时,对内存进行回收,从而缓解由于内存颠簸导致的卡顿等现象,优化了内存回收机制,且提高了电子设备的使用性能。
如图3所示,在一个实施例中,步骤根据杀进程规则进行内存回收,可包括以下步骤:
步骤302,获取与内存颠簸程度对应的杀进程规则。
不同的内存颠簸程度可分别对应不同的杀进程规则,杀进程规则可用于限定选择杀掉的后台进程所需满足的条件,从而可实现不同的内存回收效果。当内存颠簸程度越大时,可采用更为激进的杀进程规则,更加积极地选择进程杀掉,从而可快速缓解由于内存颠簸造性的系统性能下降的情况。
步骤304,从当前运行的后台进程中选择满足杀进程规则的后台进程杀掉。
在一个实施例中,步骤302可包括:确定内存颠簸程度所属的目标颠簸程度区间,并获取与该目标颠簸程度区间对应的优先级阈值。其中,各个颠簸程度区间的下限值与对应的优先级阈值呈正相关关系。可预先设置有多个(指两个或两个以上)颠簸程度区间,每个颠簸程度区间可用于表示不同的内存颠簸程度范围。电子设备在确定内存颠簸程度后,可将该确定的内存颠簸程度与各个预先设置的颠簸程度区间进行比较,并确定该内存颠簸程度所属的目标颠簸程度区间。
在一些实施例中,内存颠簸程度所采用的表示方式不同,预先设置的多个颠簸程度区间可不同,例如,内存颠簸程度采用一定时间段内系统中被回收又被很快重新访问的文件页数量进行表示,则预先设置的多个颠簸程度区间可为0~100、100~150、大于150等;内存颠簸程度采用一定时间段内系统中被回收又被很快重新访问的文件页数量占总体文件页数量的比例进行表示,则预先设置的多个颠簸程度区间可为80%~100%、100%~150%、150%~200%、大于200%等,但不限于此。
每个颠簸程度区间可分别对应不同的优先级阈值,电子设备在获取内存颠簸程度所属的目标颠簸程度区间对应的优先级阈值后,可从当前运行的后台进程中选择优先级低于该优先级阈值的后台进程杀掉。内存颠簸程度所属的目标颠簸程度区间的下限值越大,说明内存颠簸程度越严重,则可选择优先级越高的进程杀掉,以更快地释放内存。
可选地,进程的优先级可用adj值表示,可获取目标颠簸程度区间对应的设定值,并选取adj值大于该设定值的后台进程杀掉,当内存颠簸程度所属的目标颠簸程度区间的下限值越大时,对应的设定值可越小,从而可选择优先级越大的进程杀掉。示例性地,内存颠簸程度采用一定时间段内系统中被回收又被很快重新访问的文件页数量进行表示,各个颠簸程度区间与adj值的设定值的对应关系可如表2所示。
表2
Adj值的设定值 0 200 300
颠簸程度区间 大于150 100~150 80~100
以表2为例,当一定时间段内系统中被回收又被很快重新访问的文件页数量在80~100之间时,可选取adj值大于300的后台进程杀掉,当一定时间段内系统中被回收又被很快重新访问的文件页数量在100~150之间时,可选取adj值大于200的后台进程杀掉,当一定时间段内系统中被回收又被很快重新访问的文件页数量大于150时,可选取adj值大于0的后台进程杀掉。可以避免在内存颠簸程度较为严重时,选择不到合适的进程杀掉的情况,从而可以更大概率地选择到进程杀掉,对内存进行更加快速、有效地回收。
可选地,当一定时间段内系统中被回收又被很快重新访问的文件页数量小于80时,可不触发杀进程,不选择进程杀掉,从而避免非必要地杀进程给用户的使用造成的不便。
在一个实施例中,步骤302可包括:确定内存颠簸程度所属的目标颠簸程度区间,并获取与该目标颠簸程度区间对应的目标数量。其中,目标数量为能够杀掉的进程数量,各个颠簸程度区间的下限值与对应的目标数量呈现正相关关系。
每个颠簸程度区间可分别对应不同的目标数量,电子设备在获取内存颠簸程度所属的目标颠簸程度区间对应的目标数量后,可从当前运行的后台进程中选择该目标数量后台进程杀掉。内存颠簸程度所属的目标颠簸程度区间的下限值越大,说明内存颠簸程度越严重,则可选择数量更多的后台进程杀掉,以更快地释放内存。
示例性地,内存颠簸程度采用一定时间段内系统中被回收又被很快重新访问的文件页数量占总体文件页数量的比例进行表示,各个颠簸程度区间与目标数量的设定值的对应关系可如表3所示。
表3
目标数量 3 2 1
颠簸程度区间 大于170% 100%~170% 80%~100%
以表3为例,当一定时间段内系统中被回收又被很快重新访问的文件页数量占总体文件页数量的比例在80%~100%之间时,可选择1个后台进程杀掉;当一定时间段内系统中被回收又被很快重新访问的文件页数量占总体文件页数量的比例在100%~170%之间时,可选择2个后台进程杀掉;当一定时间段内系统中被回收又被很快重新访问的文件页数量占总体文件页数量的比例大于170%时,可选择3个后台进程杀掉。可以在发生严重的内存颠簸时,选择更多的进程杀掉,对内存进行更加快速、有效地回收。可以理解地,表2、表3中的数据仅用于说明本申请实施例,上述中的颠簸程度区间、进程的优先级、ajd值的设定值及目标数量等均可根据实际需求进行设,在此不作限定。
进一步地,若系统中当前运行的后台进程的数量大于目标颠簸程度区间对应的目标数量时,可获取各个后台进程上一次被切换至前台运行的运行时刻,并计算各个后台进程上一次被切换至前台运行的运行时刻距离当前时刻的时间间隔。可按照时间间隔从长到短的顺序,选取时间间隔最长的目标数量的后台进程杀掉。例如,确定目标颠簸程度区间对应的目标数量为2,当前运行的后台进程包括进程A、进程B及进程C,其中,进程A上一次被切换至前台运行的运行时刻距离当前时刻的时间间隔为5分钟,进程B对应的时间间间为10分钟,进程C对应的时间间隔为7分钟,则可选择时间间隔最长的进程C和进程B杀掉。
可选地,若系统中当前运行的后台进程的数量大于目标颠簸程度区间对应的目标数量时,也可获取各个后台进程被切换至前台运行的概率。作为一种具体实施方式,各个进程被切换至前台运行的概率可根据用户的历史使用记录进行统计得到,也可根据各个进程所对应的应用程序类型确定,例如,即时通讯类型的后台进程的概率可大于浏览器类型的后台进程的概率,娱乐类型的后台进程的概率可大于即时通讯类型的后台进程等,但不限于此。可按照被切换至前台运行的概率从小到大的顺序,选取概率最小的目标数量的后台进程杀掉。采用上述方式选择目标数量的后台进程杀掉,可在快速释放内存的同时,减少杀进程对用户使用的影响,提高了电子设备的使用性能。
在一些实施例中,在确定内存颠簸程度所属的目标颠簸程度区间后,可获取该目标颠簸程度区间对应的优先级阈值及目标数量。每个颠簸程度区间可分别对应不同的优先值阈值及目标数量。电子设备可从当前运行的后台进程中确定优先级低于目标颠簸程度区间对应的优先级阈值的后台进程,并从中选取出目标颠簸程度区间对应的目标数量的后台进程杀掉。可选地,可从优先级低于目标颠簸程度区间对应的优先级阈值的后台进程中,随机选取目标数量的后台进程杀掉,也可选择其中优先级最低的目标数量的后台进程杀掉等。
图4为一个实施例中基于不同内存颠簸程度采用不同杀进程策略的示意图。如图4所示,当系统低内存时,触发内存颠簸计算模块,确定内存颠簸程度,并在内存颠簸程度高于第二阈值时,触发杀进程回收内存机制。其中,可包括两种杀进程策略,当内存颠簸程度>100且<150时,执行策略1,选择adj值大于200的1个进程杀掉,当内存颠簸程度>150时,执行策略2,选择adj值大于0的2个进程杀掉。
可以理解地,与内存颠簸程度对应的杀进程规则并不仅限于上述实施例中所描述的几种方式,也可以采用其它的杀进程规则,例如,可按照各个进程占用的内存大小选择进程杀掉,内存颠簸程度越大,可选择占用的内存越大的进程杀掉等,本申请实施例不对内存颠簸程度对应的杀进程规则进行限定。
在本申请实施例中,在系统的空闲内存低于第一阈值时,确定内存颠簸程度,并根据不同的内存颠簸程度采用不同的杀进程策略,在内存颠簸程度较为严重时,能够对内存进行更加快速、有效地回收,有效缓解内存颠簸造成的性能下降等情况,提高了电子设备的使用性能。
如图5所示,在一个实施例中,提供另一种内存优化方法,可应用于上述的电子设备,该方法可包括以下步骤:
步骤502,对操作系统的空闲内存进行监控。
步骤502的描述可参照上述实施例中的步骤210的相关描述,在此不再赘述。
步骤504,当检测到当前的空闲内存低于第一阈值时,获取第一时间段内操作系统中发生目标事件的文件页数量。
步骤506,计算文件页数量占文件页总数量的比例,并根据比例确定操作系统的内存颠簸程度。
当检测到当前的空闲内存低于第一阈值时,可确定内存颠簸程度。内存颠簸程度可根据系统中第一时间段内发生目标事件的文件页数量占文件页总数量的比例确定。其中,目标事件可指的是文件页被回收后在时间阈值内又重新被访问的事件,可选地,时间阈值可根据实际需求进行设定,例如1分钟、3分钟等,文件页被回收后在时间阈值内又重新被访问,可表示从磁盘中读取出的数据缓存在文件页中被回收,又在回收后很快重新从磁盘中读取。
作为一种具体实施方式,操作系统的内核可对每次文件页发生目标事件进行记录,可记录有系统中发生目标事件的文件页数量,可将每次文件页发生目标事件定义为内存中发生文件页refault,内核可通过workingset_refault实时记录内存发生文件页refault的次数,每次内存发生文件页refault,workingset_refault的值均会进行更新。workingset_refault的值即表示文件页被回收又很快被访问的次数。可将内核中通过workingset_refault统计的内存发生文件页refault的次数作为发生目标事件的文件页数量。
在一些实施例中,获取第一时间段内操作系统中发生目标事件的文件页数量,可包括但不限于以下几种情况:
(1)第一时间段可为根据实际需求预先设置的时间段。电子设备在确定操作系统的内存颠簸程度之前,可每隔第二时间段从内核中读取操作系统中文件页发生目标事件的次数,并记录每次读取的次数。可选地,第二时间段可与第一时间段相同,也可以是与第一时间段不同的时间段,例如,第一时间段为5分钟,第二时间段为2分钟等。可每隔第二时间段从内核中读取workingset_refault的值,该workingset_refault的值即表示系统中文件页发生目标事件的次数,并对每次读取的workingset_refault的值进行记录,可将每次记录的记录时刻与记录的次数对应存储。
当检测到系统当前的空闲内存低于第一阈值时,可获取相对当前时刻最新记录的第一次数,以及在第一时间段之前最新记录的第二次数。可将第一次数与第二次数的差值确定为第一时间段内操作系统中发生目标事件的文件页数量。例如,每隔3分钟从内核中读取一次workingset_refault的值,按照记录时刻-文件页发生目标事件的次数的格式存储,可包括13:30-80、13:33-90、13:36-120、13:39-150,若在13:40时检测到空闲内存低于第一阈值,则可获取第一次数为13:39记录的150次,假设第一时间段为10分钟,则获取10分钟之前最新记录的第二次数,即13:30记录的80次。可计算第一次数与第二次数的差值为150-80=70次,则可确定10分钟内操作系统中发生目标事件的文件页数量为70。
(2)第一时间段可为当前时刻距离上一次检测到空闲内存低于第一阈值的时间段,也即,第一时间段可为本次检测到空闲内存低于第一阈值与上一次检测到空闲内存低于第一阈值相距的时间间隔。电子设备在每次检测到空闲内存低于第一阈值时,可从内核中读取操作系统中文件页发生目标事件的次数,并将读取的次数记录的当前次数。同时,可将上一次检测到空闲内存低于第一阈值时记录的次数作为第三次数,并将当前次数与第三次数的差值确定为第一时间段内操作系统中发生目标事件的文件页数量。
例如,在检测到系统的空闲内存低于第一阈值时,可从内核中读取当前的workingset_refault的值为200,可记录文件页发生目标事件的当前次数为200,并获取上一次检测到系统的空闲内存低于第一阈值时记录的次数为100,则可确定本次检测到空闲内存低于第一阈值相距上一次检测到空闲内存低于第一阈值的过程中,发生目标事件的文件页数量为200-100=100。
(3)电子设备可在系统接收到内存分配请求时,获取空闲内存,当空闲内存低于第一阈值时,需先对内存进行回收,再进行内存分配,由于这个过程中相对直接进行内存分配的过程较慢,可定义为内存分配的慢速路径。第一时间段可为本次进入内存分配的慢速路径与上一次进入内存分配的慢速路径之间的时间间隔。电子设备可在系统接收到内存分配请求,且空闲内存低于第一阈值时,从内核中读取操作系统中文件页发生目标事件的次数,并将读取的次数记录的当前次数。同时,可将上一次接收到内存分配请求,且空闲内存低于第一阈值时记录的次数作为第四次数,并将该当前次数与第四次数的差值确定为第一时间段内操作系统中发生目标事件的文件页数量。
在获取第一时间段内操作系统中发生目标事件的文件页数量后,可获取文件页总数量,并计算该第一时间段内发生目标事件的文件页数量占文件页总数量的比例,可根据该比例确定操作系统的内存颠簸程度。第一时间段内发生目标事件的文件页数量占文件页总数量的比例越大,内存颠簸程度可越大。可选地,计算内存颠簸程度的公式可如下所示:
thrashing=(workingset_refault_now-workingset_refault_init)*100/file_page
其中,thrashing表示内存颠簸程度,file_page表示文件页总数量,(workingset_refault_now-workingset_refault_init)用于表示第一时间段内发生目标事件的文件页数量,workingset_refault_now可表示当前记录的文件页发生目标事件的次数,workingset_refault_init表示第一时间段前记录的发生目标事件的次数(如上述的第二次数、第三次数或第四次数等)。
步骤508,若内存颠簸程度大于第二阈值,获取与该内存颠簸程度对应的杀进程规则。
步骤510,从当前运行的后台进程中选择满足该杀进程规则的后台进程杀掉。
步骤508及510可参照上述各实施例中的相关描述,在此不再一一赘述。
在本申请实施例中,通过系统内核记录的workingset_refault的值,建立内存颠簸监测算法,电子设备可自动识别出系统的内存颠簸程度,实现对内存颠簸的准确监控。只有在内存颠簸可能造成系统性能下降时,才会触发杀进程规则,且在内存颠簸程度较为严重时,能够对内存进行更加快速、有效地回收,有效缓解内存颠簸造成的性能下降等情况。优化了内存回收机制,且提高了电子设备的使用性能。
如图6所示,在一个实施例中,提供一种内存优化装置600,可应用于上述的电子设备。该内存优化装置600,可包括内存监控模块610、程度确定模块620及内存回收模块630。
内存监控模块610,用于对操作系统的空闲内存进行监控。
程度确定模块620,用于当检测到当前的空闲内存低于第一阈值时,确定操作系统的内存颠簸程度。
内存回收模块630,用于若内存颠簸程度大于第二阈值,则根据杀进程规则进行内存回收。
在本申请实施例中,对操作系统的空闲内存进行监控,当检测到当前的空闲内存低于第一阈值时,确定操作系统的内存颠簸程度,若内存颠簸程度大于第二阈值,则根据杀进程规则进行内存回收,能够在操作系统出现内存颠簸时,对内存进行回收,从而缓解由于内存颠簸导致的卡顿等现象,优化了内存回收机制,且提高了电子设备的使用性能。
在一个实施例中,内存回收模块630,包括规则获取单元及杀进程单元。
规则获取单元,用于获取与内存颠簸程度对应的杀进程规则。
杀进程单元,用于从当前运行的后台进程中选择满足杀进程规则的后台进程杀掉。
在一个实施例中,规则获取单元,还用于确定内存颠簸程度所属的目标颠簸程度区间,并获取与目标颠簸程度区间对应的优先级阈值,其中,各个颠簸程度区间的下限值与对应的优先级阈值呈正相关关系。
杀进程单元,还用于从当前运行的后台进程中选择优先级低于优先级阈值的后台进程杀掉。
在一个实施例中,规则获取单元,还用于确定内存颠簸程度所属的目标颠簸程度区间,并获取与目标颠簸程度区间对应的目标数量,其中,目标数量为能够杀掉的进程数量,各个颠簸程度区间的下限值与对应的目标数量呈现正相关关系。
杀进程单元,还用于从当前运行的后台进程中选择目标数量的后台进程杀掉。
在本申请实施例中,在系统的空闲内存低于第一阈值时,确定内存颠簸程度,并根据不同的内存颠簸程度采用不同的杀进程策略,在内存颠簸程度较为严重时,能够对内存进行更加快速、有效地回收,有效缓解内存颠簸造成的性能下降等情况,提高了电子设备的使用性能。
在一个实施例中,程度确定模块620,包括数量获取单元及计算单元。
数量获取单元,用于获取第一时间段内操作系统中发生目标事件的文件页数量,目标事件为文件页被回收后在时间阈值内又重新被访问的事件。
在一个实施例中,上述内存优化装置600,除了包括内存监控模块610、程度确定模块620及内存回收模块630,还包括读取模块。
读取模块,用于每隔第二时间段从内核中读取操作系统中文件页发生目标事件的次数,并记录每次读取的次数。
数量获取单元,还用于获取相对当前时刻最新记录的第一次数,以及在第一时间段之前最新记录的第二次数,并将第一次数与第二次数的差值确定为第一时间段内操作系统中发生目标事件的文件页数量。
在一个实施例中,数量获取单元,还用于从内核中读取操作系统中文件页发生目标事件的次数,并将读取的次数记录的当前次数,获取上一次检测到空闲内存低于第一阈值时记录的第三次数,并将当前次数与第三次数的差值确定为第一时间段内操作系统中发生目标事件的文件页数量。
计算单元,用于计算文件页数量占文件页总数量的比例,并根据比例确定操作系统的内存颠簸程度。
在本申请实施例中,通过系统内核记录的文件页发生目标事件的次数,建立内存颠簸监测算法,电子设备可自动识别出系统的内存颠簸程度,实现对内存颠簸的准确监控。只有在内存颠簸可能造成系统性能下降时,才会触发杀进程规则,且在内存颠簸程度较为严重时,能够对内存进行更加快速、有效地回收,有效缓解内存颠簸造成的性能下降等情况。优化了内存回收机制,且提高了电子设备的使用性能。
图7为一个实施例中电子设备的结构框图。电子设备可以是手机、平板电脑、智能穿戴设备等设备。如图7所示,电子设备700可以包括一个或多个如下部件:处理器710、与处理器710耦合的存储器720,其中存储器720可存储有一个或多个应用程序,一个或多个应用程序可以被配置为由一个或多个处理器710执行,一个或多个程序配置用于执行如上述各实施例中所描述的方法。
处理器710可以包括一个或者多个处理核。处理器710利用各种接口和线路连接整个电子设备700内的各个部分,通过运行或执行存储在存储器720内的指令、程序、代码集或指令集,以及调用存储在存储器720内的数据,执行电子设备700的各种功能和处理数据。可选地,处理器710可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器710可集成中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器710中,单独通过一块通信芯片进行实现。
存储器720可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。存储器720可用于存储指令、程序、代码、代码集或指令集。存储器720可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等。存储数据区还可以存储电子设备700在使用中所创建的数据等。
可以理解地,电子设备700可包括比上述结构框图中更多或更少的结构元件,例如,包括电源、输入按键、摄像头、扬声器、屏幕、RF(Radio Frequency,射频)电路、Wi-Fi(Wireless Fidelity,无线保真)模块、蓝牙模块、传感器等,还可在此不进行限定。
本申请实施例公开一种计算机可读存储介质,其存储计算机程序,其中,该计算机程序被处理器执行时实现如上述各实施例中描述的方法。
本申请实施例公开一种计算机程序产品,该计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,且该计算机程序可被处理器执行时实现如上述各实施例描述的方法。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等。
如此处所使用的对存储器、存储、数据库或其它介质的任何引用可包括非易失性和/或易失性存储器。合适的非易失性存储器可包括ROM、可编程ROM(Programmable ROM,PROM)、可擦除PROM(Erasable PROM,EPROM)、电可擦除PROM(Electrically ErasablePROM,EEPROM)或闪存。易失性存储器可包括随机存取存储器(random access memory,RAM),它用作外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(Static RAM,SRAM)、动态RAM(Dynamic Random Access Memory,DRAM)、同步DRAM(synchronous DRAM,SDRAM)、双倍数据率SDRAM(Double Data Rate SDRAM,DDR SDRAM)、增强型SDRAM(Enhanced Synchronous DRAM,ESDRAM)、同步链路DRAM(Synchlink DRAM,SLDRAM)、存储器总线直接RAM(Rambus DRAM,RDRAM)及直接存储器总线动态RAM(DirectRambus DRAM,DRDRAM)。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定特征、结构或特性可以以任意适合的方式结合在一个或多个实施例中。本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在本申请的各种实施例中,应理解,上述各过程的序号的大小并不意味着执行顺序的必然先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物单元,即可位于一个地方,或者也可以分布到多个网络单元上。可根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元若以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可获取的存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或者部分,可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干请求用以使得一台计算机设备(可以为个人计算机、服务器或者网络设备等,具体可以是计算机设备中的处理器)执行本申请的各个实施例上述方法的部分或全部步骤。
以上对本申请实施例公开的一种内存优化方法、装置、电子设备及计算机可读存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (9)

1.一种内存优化方法,其特征在于,包括:
对操作系统的空闲内存进行监控;
当检测到当前的空闲内存低于第一阈值时,获取第一时间段内所述操作系统中发生目标事件的文件页数量,所述目标事件为文件页被回收后在时间阈值内又重新被访问的事件,计算所述文件页数量占文件页总数量的比例,并根据所述比例确定所述操作系统的内存颠簸程度;
若所述内存颠簸程度大于第二阈值,则根据杀进程规则进行内存回收。
2.根据权利要求1所述的方法,其特征在于,所述根据杀进程规则进行内存回收,包括:
获取与所述内存颠簸程度对应的杀进程规则;
从当前运行的后台进程中选择满足所述杀进程规则的后台进程杀掉。
3.根据权利要求2所述的方法,其特征在于,所述获取与所述内存颠簸程度对应的杀进程规则,包括:
确定所述内存颠簸程度所属的目标颠簸程度区间;
获取与所述目标颠簸程度区间对应的优先级阈值,其中,各个颠簸程度区间的下限值与对应的优先级阈值呈正相关关系;
所述从当前运行的后台进程中选择满足所述杀进程规则的后台进程杀掉,包括:
从当前运行的后台进程中选择优先级低于所述优先级阈值的后台进程杀掉。
4.根据权利要求2所述的方法,其特征在于,所述获取与所述内存颠簸程度对应的杀进程规则,包括:
确定所述内存颠簸程度所属的目标颠簸程度区间;
获取与所述目标颠簸程度区间对应的目标数量,其中,所述目标数量为能够杀掉的进程数量,各个颠簸程度区间的下限值与对应的目标数量呈现正相关关系;
所述从当前运行的后台进程中选择满足所述杀进程规则的后台进程杀掉,包括:
从当前运行的后台进程中选择所述目标数量的后台进程杀掉。
5.根据权利要求1所述的方法,其特征在于,在所述当检测到当前的空闲内存低于第一阈值时,确定所述操作系统的内存颠簸程度之前,所述方法还包括:
每隔第二时间段从内核中读取所述操作系统中文件页发生目标事件的次数,并记录每次读取的次数;
所述获取第一时间段内所述操作系统中发生目标事件的文件页数量,包括:
获取相对当前时刻最新记录的第一次数,以及在第一时间段之前最新记录的第二次数,并将所述第一次数与第二次数的差值确定为所述第一时间段内所述操作系统中发生所述目标事件的文件页数量。
6.根据权利要求1所述的方法,其特征在于,所述第一时间段为当前时刻距离上一次检测到空闲内存低于所述第一阈值的时间段;
所述获取第一时间段内所述操作系统中发生目标事件的文件页数量,包括:
从内核中读取所述操作系统中文件页发生目标事件的次数,并将读取的次数记录的当前次数;
获取所述上一次检测到空闲内存低于所述第一阈值时记录的第三次数;
将所述当前次数与第三次数的差值确定为所述第一时间段内所述操作系统中发生所述目标事件的文件页数量。
7.一种内存优化装置,其特征在于,包括:
内存监控模块,用于对操作系统的空闲内存进行监控;
程度确定模块,用于当检测到当前的空闲内存低于第一阈值时,获取第一时间段内所述操作系统中发生目标事件的文件页数量,所述目标事件为文件页被回收后在时间阈值内又重新被访问的事件,计算所述文件页数量占文件页总数量的比例,并根据所述比例确定所述操作系统的内存颠簸程度;
内存回收模块,用于若所述内存颠簸程度大于第二阈值,则根据杀进程规则进行内存回收。
8.一种电子设备,其特征在于,包括存储器及处理器,所述存储器中存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器实现如权利要求1至6任一所述的方法。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一所述的方法。
CN202010719386.7A 2020-07-23 2020-07-23 内存优化方法、装置、电子设备及计算机可读存储介质 Active CN111880991B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010719386.7A CN111880991B (zh) 2020-07-23 2020-07-23 内存优化方法、装置、电子设备及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010719386.7A CN111880991B (zh) 2020-07-23 2020-07-23 内存优化方法、装置、电子设备及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN111880991A CN111880991A (zh) 2020-11-03
CN111880991B true CN111880991B (zh) 2022-09-13

Family

ID=73200145

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010719386.7A Active CN111880991B (zh) 2020-07-23 2020-07-23 内存优化方法、装置、电子设备及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN111880991B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113032291B (zh) * 2021-03-31 2023-05-26 四川长虹空调有限公司 查找数据与改写数据的方法
CN116107742A (zh) * 2021-06-10 2023-05-12 荣耀终端有限公司 虚拟内存管理方法和电子设备
CN115809139A (zh) * 2021-06-16 2023-03-17 荣耀终端有限公司 内存管理的方法及电子设备
CN113986543A (zh) * 2021-10-27 2022-01-28 深圳小湃科技有限公司 内存释放方法、装置、设备及存储介质
CN115080209A (zh) * 2022-06-28 2022-09-20 北京百度网讯科技有限公司 系统资源调度方法、装置、电子设备及存储介质
CN116680142B (zh) * 2022-11-15 2024-05-07 荣耀终端有限公司 内存资源监测方法、电子设备、程序产品及介质
CN116049025B (zh) * 2023-01-29 2023-08-11 荣耀终端有限公司 动态调整内存回收gc参数的方法、电子设备及存储介质
CN116755951B (zh) * 2023-08-16 2024-03-08 荣耀终端有限公司 内存颠簸的衡量方法、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102799471A (zh) * 2012-05-25 2012-11-28 上海斐讯数据通信技术有限公司 操作系统的进程回收方法及系统
CN106970881A (zh) * 2017-03-10 2017-07-21 浙江大学 一基于大页的冷热页追踪及压缩回收方法
CN110377480A (zh) * 2019-06-17 2019-10-25 百度(中国)有限公司 监测处理方法、装置、系统及计算机可读存储介质
CN110908923A (zh) * 2018-09-14 2020-03-24 阿里巴巴集团控股有限公司 内存回收方法及装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7660962B2 (en) * 2005-12-15 2010-02-09 International Business Machines Corporation Use of memory compression algorithm to assess efficiency of memory usage
US8627327B2 (en) * 2007-10-24 2014-01-07 International Business Machines Corporation Thread classification suspension
US10565104B2 (en) * 2017-08-01 2020-02-18 International Business Machines Corporation System and method to manage and share managed runtime memory for JAVA virtual machine
CN108205471B (zh) * 2017-08-01 2021-04-27 珠海市魅族科技有限公司 内存回收方法及装置、计算机装置及计算机可读存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102799471A (zh) * 2012-05-25 2012-11-28 上海斐讯数据通信技术有限公司 操作系统的进程回收方法及系统
CN106970881A (zh) * 2017-03-10 2017-07-21 浙江大学 一基于大页的冷热页追踪及压缩回收方法
CN110908923A (zh) * 2018-09-14 2020-03-24 阿里巴巴集团控股有限公司 内存回收方法及装置
CN110377480A (zh) * 2019-06-17 2019-10-25 百度(中国)有限公司 监测处理方法、装置、系统及计算机可读存储介质

Also Published As

Publication number Publication date
CN111880991A (zh) 2020-11-03

Similar Documents

Publication Publication Date Title
CN111880991B (zh) 内存优化方法、装置、电子设备及计算机可读存储介质
CN111966492B (zh) 内存回收方法、装置、电子设备及计算机可读存储介质
US8099548B2 (en) Power efficient media playback on general purpose portable devices
CN107463627B (zh) 一种图片加载方法及终端
US9152479B2 (en) Apparatus and method for processing event notification
US20220156133A1 (en) Cross-Process Communication Method, Apparatus, and Device
US20070005926A1 (en) Method for managing a memory in mobile terminal
CN110888746A (zh) 内存管理方法、装置、存储介质及电子设备
KR20160132432A (ko) 멀티 프로세스 애플리케이션들을 위한 동적 자원 관리
CN104503887A (zh) 计算设备状态展示方法及装置
CN110704184B (zh) 一种应用内存优化方法、装置和移动终端
US20220035655A1 (en) Method and Device for Anonymous Page Management, Terminal Device, and Readable Storage Medium
CN114020652B (zh) 一种应用程序的管理方法及电子设备
CN115292199B (zh) 一种显存泄露的处理方法及相关装置
CN112182559A (zh) 堆栈溢出检测方法、装置、电子设备和存储介质
CN115016631B (zh) 进程调度方法和终端设备
CN115407943A (zh) 一种内存转储文件生成方法、装置、设备及可读存储介质
CN111783018A (zh) 一种页面处理方法、装置及设备
CN114461053B (zh) 资源调度方法及相关装置
CN113032290B (zh) 闪存配置方法、装置、电子设备和存储介质
CN110704157B (zh) 一种应用启动方法、相关装置及介质
CN111506843B (zh) 一种图片加载方法、系统及电子设备和存储介质
CN108664293B (zh) 安卓系统中的应用控制方法和装置
CN113032130A (zh) 系统异常处理方法和装置
CN116954914A (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