CN110865884A - 一种内存管理方法及装置 - Google Patents
一种内存管理方法及装置 Download PDFInfo
- Publication number
- CN110865884A CN110865884A CN201910938413.7A CN201910938413A CN110865884A CN 110865884 A CN110865884 A CN 110865884A CN 201910938413 A CN201910938413 A CN 201910938413A CN 110865884 A CN110865884 A CN 110865884A
- Authority
- CN
- China
- Prior art keywords
- memory
- data
- memory space
- application program
- residual
- 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.)
- Pending
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/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
- 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/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
一种内存管理方法及装置,在该方法中,首先检测电子设备的内存的剩余内存空间,然后,确定该剩余内存空间是否小于或等于第一阈值,若该剩余内容空间小于或等于第一阈值,则将内存中的部分数据迁移到电子设备的外部存储器中,并释放迁移到外部存储器的部分数据所占用的内存空间。由于将内存中的部分数据迁移到外部存储器并释放该部分数据占用的内存空间,这样,不用通过强制结束正在运行的应用程序,便可以使得内存的剩余内存空间变大,从而可以避免由于剩余内存空间过小而导致的内核强制结束部分程序,可以实现保活正在运行的所有程序。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种内存管理方法及装置等。
背景技术
内存是电子设备中的重要部件之一,电子设备中所有程序的运行都是在内存中进行的。也就是说,当电子设备要运行某个程序时,首先会将该程序对应的相关数据读取到内存中,然后再根据内存中的相关数据,运行该程序。
然而,电子设备中内存的大小有限,例如,内存的大小通常只有1吉字节(gigabyte,GB)或者2GB等,当电子设备中内存的剩余内存空间较小时,电子设备会触发清理机制,强制结束内存中运行的部分程序(例如,优先级较低的程序),并将该部分程序占用的内存释放。在这种情况下,由于强制结束了部分程序,从而导致电子设备的部分功能失效,影响用户使用。
因此,如何在电子设备中内存的剩余内存空间较小时,保活正在运行的所有的程序,是目前亟待解决的问题。
发明内容
本申请实施例提供一种内存管理方法及装置,用以实现在电子设备中内存的剩余内存空间较小时,保活正在运行的所有的程序。
第一方面,本申请提供了一种内存管理方法,在该方法中,首先检测电子设备的内存的剩余内存空间,然后,确定该剩余内存空间是否小于或等于第一阈值,若该剩余内容空间小于或等于第一阈值,则将内存中的部分数据迁移到电子设备的外部存储器中,并释放迁移到外部存储器的部分数据所占用的内存空间。
在上述技术方案中,由于将内存中的部分数据迁移到外部存储器并释放该部分数据占用的内存空间,这样,不用通过强制结束正在运行的应用程序,便可以使得内存的剩余内存空间变大,从而可以避免由于剩余内存空间过小而导致的内核强制结束部分程序,可以实现保活正在运行的所有程序。
在一种可能的设计中,检测电子设备的内存的剩余内存空间,包括但不限于如下方式中的一种或多种:
第一种检测方式:按照预设的检测周期,检测该剩余内存空间。
通过周期性检测内存的剩余内存空间,可以较为准确地获取电子设备中内存的使用情况,以便于及时对内存中存储的数据进行处理。
第二种检测方式,在该电子设备接收到运行新的应用程序的操作请求,且在运行该新的应用程序之前,检测该剩余内存空间。
第三种检测方式,在该电子设备运行该新的应用程序之后,检测该剩余内存空间。
由于内存中存储电子设备处于运行状态的应用程序的相关数据,也就是说,若电子设备中处于运行状态的应用程序不发生变化,则内存的剩余内存空间也不会有较大的变化,这样,在不运行新的应用程序时,则不用对内存的剩余内存空间进行检测,可以减少电子设备的负载。
第四种检测方式,在该电子设备接收到运行新的应用程序的操作请求,且运行该新的应用程序所需的内存空间大于或等于第二阈值时,检测该剩余内存空间。
电子设备只有在运行的应用程序所占用内存空间较大时,也就是说可以在大内存使用场景下,才检测剩余内存空间,可以减少电子设备的负载。
第五种检测方式,在该电子设备接收到运行新的应用程序的操作请求,且该新的应用程序为预设类型的应用程序时,检测该剩余内存空间。
电子设备只有在运行的特定类型的应用程序时,才检测剩余内存空间,在运行其他类型的应用程序则不用检测剩余内存空间,可以减少电子设备的负载。
进一步,电子设备可以通过上述多种检测方式中的其中一种或多种来检测剩余内存空间,可以增加电子设备的灵活性。
在一种可能的设计中,当将内存中的部分数据迁移到外部存储器时,可以先将该部分数据进行压缩处理,获得压缩后的数据,然后,将压缩后的数据迁移到该外部存储器中。
电子设备可以直接将内存中的部分数据迁移到外部存储器中,也可以先对需要迁移的部分数据进行压缩处理,然后将压缩处理后的数据迁移到外部存储器中,由于压缩后的数据的数据量减小,从而可以减少迁移的数据量的大小。
在一种可能的设计中,在将内存中的部分数据迁移到外部存储器中之后,继续检测内存的剩余内存空间,在内存的剩余内存空间大于或等于第三阈值时,将该部分数据从外部存储器迁移到内存中。
当内存的剩余内存空间较大时,可以将迁移到外部存储器的数据重新迁移至内存,这样电子设备可以重新使用该部分数据。
在一种可能的设计中,检测迁移到外部存储器中的数据的数据量,在迁移到外部存储器的数据的数据量大于或等于第一数据量时,禁止向外部存储器迁移数据。
通过限制迁移到外部存储器的数据的数据量,可以尽可能地控制写入到外部存储器的数据的数据量,减少对外部存储器的使用寿命的影响。
第二方面,提供一种内存管理装置,该装置包括处理器,用于实现上述第一方面描述的方法。所述装置还可以包括存储器,用于存储程序指令和数据。所述存储器与所述处理器耦合,所述处理器可以调用并执行所述存储器中存储的程序指令,用于实现上述第一方面描述的方法。所述装置还可以包括接口,该接口与处理器进行通信。
在一种可能的设计中,该装置包括接口和处理器,其中,所述处理器用于:
检测电子设备的内存的剩余内存空间;
在所述剩余内容空间小于或等于第一阈值时,将所述内存中的部分数据迁移到所述电子设备的外部存储器中;
释放所述部分数据所占用的内存空间。
在一种可能的设计中,所述处理器用于:
按照预设的检测周期,检测所述剩余内存空间;或,
在所述电子设备接收到运行新的应用程序的操作请求,且在运行所述新的应用程序之前,检测所述剩余内存空间;或,
在所述电子设备运行所述新的应用程序之后,检测所述剩余内存空间;或,
在所述电子设备接收到运行新的应用程序的操作请求,且运行所述新的应用程序所需的内存空间大于或等于第二阈值时,检测所述剩余内存空间;或,
在所述电子设备接收到运行新的应用程序的操作请求,且所述新的应用程序为预设类型的应用程序时,检测所述剩余内存空间。
在一种可能的设计中,所述处理器用于:
将所述部分数据进行压缩处理,获得压缩后的数据;
将所述压缩后的数据迁移到所述外部存储器中。
在一种可能的设计中,所述处理器还用于:
在所述内存的剩余内存空间大于或等于第三阈值时,将所述部分数据从所述外部存储器迁移到所述内存中。
在一种可能的设计中,所述处理器还用于:
检测迁移到所述外部存储器中的数据的数据量;
在迁移到所述外部存储器的数据的数据量大于或等于第一数据量时,禁止向所述外部存储器迁移数据。
第三方面,提供一种内存管理装置,该装置可以是电子设备,也可以是电子设备中的装置,该装置可以包括检测模块和处理模块,这些模块可以执行上述第一方面任一种设计示例中相应的功能,且这些模块可以通过软件模块实现,也可以通过相应的硬件实体实现,比如当通过相应的硬件实体实现时,检测模块和处理模块的功能与上述第二方面中处理器的功能类似。
在一种可能的设计中,该检测模块,用于检测电子设备的内存的剩余内存空间;该处理模块,用于在所述剩余内容空间小于或等于第一阈值时,将所述内存中的部分数据迁移到所述电子设备的外部存储器中;以及,释放所述部分数据所占用的内存空间。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被计算机执行时,使所述计算机执行第一方面中任意一项所述的方法。
第五方面,本申请实施例提供一种计算机程序产品,所述计算机程序产品存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被计算机执行时,使所述计算机执行第一方面中任意一项所述的方法。
第六方面,本申请实施例提供了一种芯片系统,该芯片系统包括处理器,还可以包括存储器,用于实现第一方面所述的方法。该芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
第七方面,本申请实施例提供一种终端,该终端包括处理器和存储器,所述存储器中存储有计算机可执行指令,所述计算机可执行指令在被所述处理器调用时用于使所述处理器执行第一方面所述的方法。
上述第二方面至第七方面及其实现方式的有益效果可以参考对第一方面的方法及其实现方式的有益效果的描述。
附图说明
图1为本申请实施例提供的电子设备100的一个示例性的结构示意图;
图2为本申请实施例中提供的电子设备100的逻辑框图;
图3为本申请实施例中内核层22和硬件层23的一种示例的逻辑框图;
图4为本申请实施例中提供的内存管理方法的一种示例的流程图;
图5为本申请实施例中提供的内存管理方法的另一种示例的示意图;
图6为本申请实施例中提供的内存管理装置的一种示例的示意图;
图7为本申请实施例中提供的内存管理装置的另一种示例的示意图;
图8为本申请实施例中提供的内存管理装置的另一种示例的示意图。
具体实施方式
为了使本申请实施例的目的、技术方案和优点更加清楚,下面将结合说明书附图以及具体的实施方式对本申请实施例中的技术方案进行详细的说明。以下,对本申请实施例中的部分用语进行解释说明,以便于本领域技术人员理解。
1)电子设备,可以具体为终端设备或者服务器式终端设备。具体的,终端设备可以是移动式或便携式并执行无线通信的各种类型的计算机系统或设备中的任一个计算机系统或设备。例如可包括移动电话或智能电话(例如iPhoneTM、基于AndroidTM的电话)、便携式游戏设备(例如,Nintendo DSTM、PlayStation PortableTM、Gameboy AdvanceTM、iPhoneTM)、膝上型电脑、个人通信业务(personal communication service,PCS)电话、会话发起协议(session initiation protocol,SIP)话机、无线本地环路(wireless local loop,WLL)站、个人数码助理(personal digital assistant,PDA)、便携式互联网设备、音乐播放器、数据存储设备、其他手持设备以及可穿戴设备。
或者,终端设备还可以包括受限设备,例如功耗较低的设备,或存储能力有限的设备,或计算能力有限的设备等。例如包括条码、射频识别(radio frequencyidentification,RFID)、传感器、全球定位系统(global positioning system,GPS)、激光扫描器等信息传感设备。
作为示例而非限定,在本申请实施例中,智能穿戴式设备,是应用穿戴式技术对日常穿戴进行智能化设计、开发出可以穿戴的设备的总称,如眼镜、手套、手表、服饰及鞋等。智能穿戴式设备即直接穿在身上,或是整合到用户的衣服或配件的一种便携式设备。智能穿戴式设备不仅仅是一种硬件设备,更是通过软件支持以及数据交互、云端交互来实现强大的功能。广义智能穿戴式设备包括功能全、尺寸大、可不依赖智能手机实现完整或者部分的功能,例如:智能手表或智能眼镜等,以及只专注于某一类应用功能,需要和其它设备如智能手机配合使用,如各类进行体征监测的智能手环、智能头盔、智能首饰等。
或者,该终端设备还可以是虚拟现实(virtual reality,VR)设备、增强现实(augmented reality,AR)设备、工业控制(industrial control)中的无线终端设备、无人驾驶(driverless)中的无线终端设备、远程手术(remote medical surgery)中的无线终端设备、智能电网(smart grid)中的无线终端设备、运输安全(transportation safety)中的无线终端设备、智慧城市(smart city)中的无线终端设备、智慧家庭(smart home)中的无线终端设备等。
2)本申请实施例中“多个”是指两个或两个以上,鉴于此,本申请实施例中也可以将“多个”理解为“至少两个”。“至少一个”,可理解为一个或多个,例如理解为一个、两个或更多个。例如,包括至少一个,是指包括一个、两个或更多个,而且不限制包括的是哪几个,例如,包括A、B和C中的至少一个,那么包括的可以是A、B、C、A和B、A和C、B和C、或A和B和C。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。在本申请实施例中,“程序”和“应用程序”可以互换使用。
除非有相反的说明,本申请实施例提及“第一”、“第二”等序数词用于对多个对象进行区分,不用于限定多个对象的顺序、时序、优先级或者重要程度。
下面介绍本申请实施例的一种电子设备的结构图。图1示出了电子设备的一个示例性的结构示意图。如图1所示,电子设备100包括:处理器110和存储器120等部件,这些部件可通过一根或多根总线或信号线进行通信,总线可以分为地址总线、数据总线、控制总线等。本领域技术人员可以理解,图1中示出的电子设备的结构并不构成对电子设备的限定,本发明实施例提供的电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
处理器110可以是中央处理器(central processing unit,CPU),网络处理器(network processor,NP)或者CPU和NP的组合。处理器110还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。
存储器120,用于存储计算机程序(或者简称为代码),例如应用程序和操作系统对应的计算机程序;处理器110可调用存储器120存储的计算机程序,从而实现该计算机程序定义的功能。存储器120可以包括内部存储器(也可以称为内存)121和外部存储器122,其中,内存121用于暂时存放处于运行状态的应用程序以及操作系统的代码以及数据,外部存储器122则用于存储处于非运行状态的应用程序的代码以及数据等。
例如,处理器110可以将操作系统对应的代码存储到内存121中,然后执行内存121中操作系统对应的代码,从而在电子设备100上实现操作系统的各种功能,处理器110也可以将应用程序对应的代码存储到内存121中,然后执行该应用程序对应的代码,从而在电子设备100上实现该应用程序的各种功能。操作系统可以为Windows系统、MAC OS系统、Linux系统或者Android系统等,当然也可以是面向未来的计算机系统,本申请实施例中不作限制。
存储器120可以包括易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储器120也可以包括非易失性存储器(non-volatilememory),例如快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储器120还可以包括上述种类的存储器的组合。存储器120的个数可以为一个或者多个,具体可以根据需要进行设置。
进一步地,在一个实施例中,以电子设备100的操作系统为Android系统为例,如图2所示,电子设备100从逻辑上可划分为应用层21、内核层22和硬件层23。其中,硬件层23可包括图1所示的处理器110和存储器120等;应用层21包括一个或多个应用程序(应用程序1~应用程序3等),具体应用程序可以为社交类应用、电子商务类应用、浏览器等任意类型的应用程序。内核层22作为硬件层23和应用层21之间的软件中间件,用于管理和控制硬件与软件资源,例如,对电子设备100的内存进行管理。
下面,基于上述应用场景,介绍现有技术中的内存管理过程。
电子设备100中正在运行的应用程序包括应用程序1和应用程序2,当由新的应用程序3向内核层22申请内存,例如,申请50M的内存,内核层22确定内存121中剩余内存空间小于50M,则内核层22可以按照应用程序的运行时间的先后顺序,确定强制结束运行时间最早的应用程序,例如,确定强制结束应用程序1,从而释放应用程序1占用的内存空间释放,并将释放的内存空间提供给应用程序3使用。
由上述过程可知,内核层22强制结束了应用程序1,可能会导致电子设备的部分功能失效。例如,应用程序1用于接收广播消息,当应用程序1被强制结束后,电子设备将无法接收到广播消息,影响用户使用。
鉴于此,本申请实施例提供一种内存管理方法,可应用于电子设备中,用以实现在电子设备中内存的剩余内存空间较小时,保活正在运行的所有的程序。
在本申请实施例中,首先对内核层22和硬件层23进行了如下改进:
请参考图3,内核层22包括内核221和用于提供底层系统服务的设备222,例如,设备222可以包括用于对内存121中的数据进行压缩处理的ZRAM块设备,以及用于实现将内存121中的数据交换到外部存储器122的swap块设备,其中ZRAM块设备与内存121对应,swap块设备与外部存储器122对应。存储在内存121中的数据分为两个部分,第一部分为与ZRAM块设备对应的数据(或者可以称为ZRAM分区中的内存页),第二部分为位于非ZRAM分区中的数据,其中,只有位于ZRAM分区中的数据才能执行交换到外部存储器122的操作。外部存储器中的数据也可以分为两个部分,第一部分为与swap块设备对应的数据(或者可以称为swap分区中的数据),swap分区中的数据为由内存121交换到外部存储器122的数据,第二部分为不是由内存121的交换操作得到的数据。需要说明的是,本申请实施例中的数据,可以理解为应用程序的进程或者线程或者配置数据等,“将内存121中的数据交换到外部存储器”可以理解为,将内存121中的数据迁移到外部存储器,也就是说,交换数据可以理解为迁移数据。
另外,本申请实施例中,不对ZRAM块设备、swap块设备、ZRAM分区以及swap分区的名称进行限制,在其他的实施例中还可以被称为其它名称。ZRAM块设备和swap块设备的功能也可以采用其他方式实现,例如,ZRAM块设备可以通过用于对数据进行压缩的线程来实现,同样地,swap块设备也可以通过线程来实现。或者,在内存121和外部存储器122中也可以不设置ZRAM分区和swap分区,为方便说明,下文中,以图3所示的示例进行说明,但是本领域技术人员不应将图3所示的场景理解为对本申请实施例中的限制。
下面结合附图介绍本申请实施例提供的技术方案。
请参见图4,为本申请实施例提供的内存管理方法的一种示例的流程图。
在下面的介绍过程中,以本申请提供的技术方案应用在图3所示的应用场景中为例进行说明。作为一种示例,该方法可由如图3所示的内核221执行,或者,可以理解为,该方法可以由电子设备100中的处理器110运行内核221的程序来执行。
S401、内核221将需要执行的程序的相关数据存储在内存121的非ZRAM分区中。
当电子设备100开机时,内核221会将用于支持该电子设备100处于运行状态的相关数据读取到内存121的非ZRAM分区中,例如,将电子设备100的操作系统以及应用程序1~应用程序3所包括所有的进程、线程或者配置数据读取到内存121的非ZRAM分区中。当然,程序的相关数据可能不仅包括进程、线程或者配置数据,还可以包括其他类型的数据,在此不一一举例,在本申请实施例中,程序的相关数据是指包括与该程序对应的所有类型的数据。
S402、检测内存121的剩余内存空间。
随着电子设备100的运行时间越来越长,电子设备100中运行的应用程序也越来越多,相应地,内存121中存储的数据也越来越多。在本申请实施例中,运行的程序的相关数据是存储在内存121的非ZRAM分区的,因此,检测内存121的剩余内存空间,可以理解为检测内存121的非ZRAM分区的剩余内存空间。
为了防止内核221由于内存121的剩余内存空间不足而触发清理机制,在本申请实施例中,在内存121的剩余内存空间达到触发清理机制的条件之前,会对内存121的剩余内存空间进行检测。
在本申请实施例中,检测内存121的剩余内存空间可以包括但不限于如下几种方式。
第一种检测方式:
内核221可以预先设置检测周期,该检测周期可以根据使用需求进行设置,例如,可以为1分钟或者2分钟等,在此不对检测周期的取值进行限制。然后,内核221按照该检测周期,对内存121的剩余内存空间进行检测。例如,在电子设备100开机后,内核221首次对内存121的剩余内存空间进行检测,获取内存121的剩余内存空间为80%;第一个检测周期后,对内存121的剩余内存空间再次进行检测,获取内存121的剩余内存空间为60%。
通过周期性检测内存121的剩余内存空间,可以较为准确地获取电子设备100中内存121的使用情况,以便于及时对内存121中存储的数据进行处理。
由前述对内存121的介绍可知,内存121中存储电子设备100中处于运行状态的应用程序的相关数据,也就是说,若电子设备100中处于运行状态的应用程序不发生变化,则内存121的剩余内存空间也不会有较大的变化,鉴于此,提供第二种检测方式。
第二种检测方式:
内核221在每次运行新的应用程序之后,对内存121的剩余内存空间进行检测。例如,应用层21接收到用户的操作请求,该操作请求用于运行应用程序4,则将该操作请求发送给内核221,内核221在接收到该请求后,则将应用程序4的相关数据读取到内存121中,并运行该应用程序4,然后,内核221对内存121中的剩余存储空间进行检测,例如,获取在运行应用程序4之后内存121的剩余存储空间为50%。
上述第二种检测方式是在应用程序运行之后,对内存121的剩余内存空间进行检测,基于相同的构思,也可以在应用程序运行之前,对内存121的剩余内存空间进行检测。鉴于此,提供第三种检测方式。
第三种检测方式:
内核221在每次运行新的应用程序之前,对内存121的剩余内存空间进行检测。作为一种示例,由前述介绍可知,应用程序在运行之前,需要向内核221申请内存空间,则内核221可以在接收到应用层21发送的申请内存空间的请求后,检测内存121中的剩余内存空间。例如,应用层21接收到用户的操作请求,该操作请求用于运行应用程序4,则应用层21向内核221发送申请内存空间的请求,内核221在接收到该请求后,则对内存121中的剩余存储空间进行检测,例如,获取在运行应用程序4之前内存121的剩余存储空间为50%。
在上述第二种方式以及第三种方式中,在不运行新的应用程序时,内核221则不用对内存121的剩余内存空间进行检测,可以减少内核221的负载。
运行不同的应用程序所需的内存空间各不相同,有的应用程序所占用的内存空间较小,例如,只需要10MB或者5MB的内存空间,而有的应用程序所占用的内存空间较大,例如可能需要50MB或者更大的内存空间。对于占用的内存空间较小的应用程序,其对内存121的剩余内存空间的影响较小,因此,为了进一步减少内核221的负载,则可以只在运行占用内存较大的应用程序之前或者之后,对内存121的剩余空间进行检测。鉴于此,提供第四种检测方式和第五种检测方式。
第四种检测方式:
内核221可以根据应用程序所占用的内存空间,来确定是否需要对内存121的剩余内存空间进行检测。作为一种示例,内核221中预先设置检测规则,该检测规则为当应用程序占用的内存空间超过第二阈值时,则对内存121的剩余内存空间进行检测。例如,该第二阈值可以为50MB,当内核221接收到应用层21的应用程序4发送的申请内存的请求后,确定该应用程序4申请的内存空间为60MB>50MB,因此,内核221确定需要对内存121的剩余内存空间进行检测。内核221可以在运行应用程序4之前进行检测,也可以在运行应用程序之后进行检测,在此不对检测时机进行限制。
第五种检测方式:
内核221可以根据是否运行特定类型的应用程序,来确定是否需要对内存121的剩余内存空间进行检测。该特定类型的应用程序可以是会占用较大内存的应用程序,例如,可以是拍照类的应用程序或者游戏类的应用程序或者视频播放类的应用程序等。作为一种示例,以该特定类型的应用程序为游戏类的应用程序为例,当内核221接收到应用层21的应用程序4发送的申请内存的请求后,内核221可以根据该请求中携带的应用程序4的信息(例如,名称或者应用类型等),确定该应用程序4是否为特定类型的应用程序。例如,内核221确定该请求中携带的该应用程序4的应用类型为游戏类,从而确定该应用程序4为特定类型的应用程序,因此,需要对内存121的剩余内存空间进行检测。其中,内核221检测内存121的剩余内存空间的检测时机与第四种检测方式中相似,在此不再赘述。
内核221可以采用上述多种检测方式中的任意一种检测方式来确定内存121的剩余内存空间,当然,也可以是使用该多种方式中的至少两种方式的组合来检测剩余内存空间,可以提高电子设备100的灵活性。
S403、在内存121的剩余内存空间小于或等于第一阈值时,将非ZRAM分区中的部分数据压缩存储到ZRAM分区中。
在内核221获取内存121的剩余内存空间后,若确定该剩余内存空间小于或等于第一阈值时,则说明内存121的剩余内存空间不够,有可能会触发内核221的清理机制。由前述内容可知,清理机制会强制结束某些应用程序或者其进程,影响用户使用,因此,在本申请实施例中,当内核221确定内存121的剩余内存空间不够时,则将非ZRAM分区中的数据存储到ZRAM分区中。需要说明的是,在本申请实施例中,将数据存储到ZRAM分区中是指,内核221首先暂停对该数据的操作,然后将该数据进行压缩,然后将压缩后的数据存储到ZRAM分区中。由于对内存121中的数据进行了压缩,从而内存121中存储的数量的数据量减小,从而使得内存121的剩余内存空间变大,避免触发内核221的清理机制。
作为一种示例,该第一阈值为30%,当内核221获取内存121的剩余内存空间小于30%时,则确定需要将非ZRAM分区中的数据存储到ZRAM分区中。
需要说明的是,该第一阈值可以与用于触发内核221的清理机制的阈值相同,或者也可以高于用于触发清理机制的阈值,在此不做限制。
下面,对将非ZRAM分区中的部分数据压缩存储到ZRAM分区的过程进行说明。
内核221可以根据预设的规则,从该非ZRAM分区中识别出待压缩的数据,然后,将该待压缩的数据存储到ZRAM分区中。在下文中,以待压缩的数据为应用程序的进程为例进行说明,当然,待压缩的数据还可以是应用程序的其他类型的数据,在此不做限制。
作为一种示例,该预设的规则可以是用于识别预设的应用程序的进程的规则,也就是说,该预设的应用程序的进程即待交换的数据。例如,该预设的应用程序可以是应用程序2和应用程序4,这样,内核221通过扫描非ZRAM分区,确定非ZRAM分区中存储有应用程序2的进程,则将应用程序2的所有进程进行压缩处理,然后将压缩后的所有进程存储到ZRAM分区中。
作为另一种示例,该预设的规则可以是用于识别预设功能的进程的规则,该预设功能可以是用来接收广播消息的进程,例如,每个进程中都包括对应的功能函数,通过识别每个进程的功能函数可以确定该进程是否是用来接收广播消息的进程。例如,内核221通过扫描非ZRAM分区,确定应用程序1~应用程序3中的每个应用程序均包括一个用于接收广播消息的进程,从而内核221将与每个应用程序对应的用于接收广播消息的进程进行压缩处理,然后将压缩后的用于接收广播消息的进程存储到ZRAM分区中。
当然,该预设的规则也可以是其他内容,例如,该预设的规则可以是将特定类型的应用程序(例如,即时通信类的应用程序或者视频播放类的应用程序等)的相关数据存储到ZRAM分区中,在本申请实施例中不作限制。
S404、将ZRAM分区中的数据存储到swap分区中,并释放该ZRAM分区中的数据占用的内存空间。
当内核221将非ZRAM分区中的数据存储ZRAM分区后,则可以进一步将该ZRAM分区中的数据存储到swap分区中,并释放该ZRAM分区中的数据所占用的内存空间,使得内存121中可用的内存空间变大,避免触发内核221的清理机制,从而所有正在运行的程序的数据都可以处于保活状态。
由于swap分区位于外部存储器122中,当外部存储器为flash类的存储器时,由于flash类的存储器的写入次数有限制,则将ZRAM分区中的数据存储swap分区中会影响外部存储器的寿命,因此,为了降低对外部存储器122的寿命的影响,在本申请实施例中,还可以对每次写入到swap分区中的数据的数据量进行限制。例如,预先设置一个周期内写入到swap分区中的数据的数据量不超过第一数据量,则当内核221确定向swap分区中写入的数据的数据量达到该第一数据量时,则暂停向swap分区中写入数据,以避免频繁向外部存储器122写入数据。该第一数据量可以是用户在该周期内写入到外部存储器122的数据总量的预设百分比,该预设百分比可以是5%或者10%等,例如,用户在该周期内写入到外部存储器122的数据总量为500MB,则该第一数据量可以是500MB的10%,即50MB。当然,也可以采用方式设置该第一数据量,在此不做限制。
S405、在将ZRAM分区中的数据存储到swap分区之后,检测内存121的剩余内存空间。
在电子设备100的使用过程中,内核221会多次检测内存121中的剩余内存空间,例如,内核221周期性检测内存121的剩余内存空间,则当内核221将ZRAM分区中的数据存储到swap分区后,内核221会再次获取内存121的剩余内存空间。
具体获取方式与步骤S402相似,在此不再赘述。
S406、在内存121的剩余内存空间大于或等于第三阈值时,将swap分区中的数据存储到内存121中。
当内核221确定内存121的剩余内存空间大于或等于第三阈值,则说明内存121的剩余内存空间较多,从而内核221将swap分区中的数据存储到内存121中,例如,swap分区中存储的是应用程序2的进程,则将应用程序2的进程存储到内存121的非ZRAM分区中,相当于对应用程序2的进程进行解冻处理,这样,内核221可以对应用程序2的进程进行操作。
进一步,由于swap分区中存储的数据是将压缩后的数据,因此,相较于现有技术中,将部分程序强制结束后,当用户再次使用该部分程序时,需要从外部存储器中重新读取该部分程序的相关数据而言,从swap分区中的读取的与该部分程序的相关数据的数据量更小,从而可以减少时延,提高电子设备的响应速度。
在上述技术方案中,通过在内存的剩余内存空间较小时,将内存中的部分程序压缩存储到ZRAM分区,以及将ZRAM分区中的数据存储到swap分区,并释放该部分程序占用的内存空间,使得内存的剩余内存空间变大,从而可以避免由于剩余内存空间过小而导致的内核强制结束部分程序,实现保活正在运行的所有程序。
在图4所示的示例中,内核221需要两次读写操作才能将待压缩的数据存储到ZRAM分区中,运算量较大,且需要消耗较多的输入/输出资源。为了简化内核221的运算量,提出第二种方式,即,内核221首先根据预设的规则,确定该所有的进程、线程或者配置数据是否需要存储到ZRAM分区中,若为是,则将该数据存储到ZRAM分区中,否则,将该数据存储到非ZRAM分区中。这样,内核221只需要一次读写操作即可将待交换的数据存储到ZRAM分区中,运算量小,且节省输入/输出资源。
基于上述思路,请参考图5,为本申请实施例提供的内存管理方法的另一种示例的流程图。在下面的介绍过程中,以本申请提供的技术方案应用在图3所示的应用场景中为例进行说明。作为一种示例,该方法可由如图3所示的内核221执行,或者,可以理解为,该方法可以由电子设备100中的处理器110运行内核221的程序来执行。
S501、内核221将需要执行的程序的相关数据存储在内存121的ZRAM分区和非ZRAM分区中。
当电子设备100处于运行状态时,内核221会根据预设的规则,确定用于支持该电子设备100处于运行状态的相关数据是存储到内存121的ZRAM分区还是非ZRAM分区中。该预设的规则与步骤S401中的预设的规则相同,在此不再赘述。作为一种示例,该预设的规则是用来识别应用程序2的进程的规则,则当内核221读取到操作系统以及应用程序1~应用程序3所包括所有的进程、线程或者配置数据后,则根据该预设的规则,将应用程序2所包括的所有的进程进行压缩处理,然后存储到ZRAM分区中,将其他的数据直接存储到非ZRAM分区中(不进行压缩处理)。
S502、检测内存121的剩余内存空间。
步骤S502与步骤S402相似,在此不再赘述。
S503、在内存121的剩余内存空间小于或等于第一阈值时,将ZRAM分区中的数据存储到swap分区中,并释放该ZRAM分区中的数据占用的内存空间。
该第一阈值与步骤S403中的第一阈值相同,在此不再赘述。作为一种示例,当第一阈值为30%,该ZRAM分区中存储的是应用程序2的进程,则当内核221获取内存121的剩余内存空间小于30%时,则将ZRAM分区中的进程存储到swap分区中。
且,为了减低对外部存储器的寿命的影响,还可以对每次写入到swap分区中的数据的数据量进行限制,具体方式与步骤S404中相应的内容相似,在此不再赘述。
S504、在将ZRAM分区中的数据存储到swap分区之后,检测内存121的剩余内存空间。
S505、在内存121的剩余内存空间大于或等于第三阈值时,将swap分区中的数据存储到内存121中。
步骤S504~步骤S505与步骤S405~步骤S406相似,在此不再赘述。
在上述技术方案中,在向内存中写入数据的过程中,区分数据应该存储到ZRAM分区还是非ZRAM分区,然后在内存的剩余内存空间较小时,直接将ZRAM分区中的数据存储到swap分区,从而内存可以并释放该部分程序占用的内存空间,使得内存的剩余内存空间变大,从而可以避免由于剩余内存空间过小而导致的内核强制结束部分程序,实现保活正在运行的所有程序。
上述本申请提供的实施例中,从电子设备的角度对本申请实施例提供的方法进行了介绍。为了实现上述本申请实施例提供的方法中的各功能,电子设备可以包括硬件结构和/或软件模块,以硬件结构、软件模块、或硬件结构加软件模块的形式来实现上述各功能。上述各功能中的某个功能以硬件结构、软件模块、还是硬件结构加软件模块的方式来执行,取决于技术方案的特定应用和设计约束条件。
图6示出了一种内存管理装置600的结构示意图。其中,内存管理装置600可以是电子设备,能够实现本申请实施例提供的方法中电子设备的功能;内存管理装置600也可以是能够支持电子设备实现本申请实施例提供的方法中电子设备的功能的装置。内存管理装置600可以是硬件结构、软件模块、或硬件结构加软件模块。内存管理装置600可以由芯片系统实现。本申请实施例中,芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
内存管理装置600可以包括处理模块601和检测模块602。
检测模块602可以用于执行图4所示的实施例中的步骤S402和步骤S405,以及,用于执行图5所示的实施例中的步骤S502和步骤S504,和/或用于支持本文所描述的技术的其它过程。检测模块602用于内存管理装置600和处理模块601进行通信,其可以是电路、器件、接口、总线、软件模块或者其它任意可以实现通信的装置。
处理模块601可以用于执行图4所示的实施例中的步骤S401、步骤S403~步骤S404以及步骤S406,以及,用于执行图5所示的实施例中的步骤S501、步骤S503以及步骤S505,和/或用于支持本文所描述的技术的其它过程。
其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
本申请实施例还提供一种内存管理装置,该内存管理装置可以是终端也可以是电路。该内存管理装置可以用于执行上述方法实施例中由电子设备所执行的动作。
以终端为手机为例,图7示出的是与本申请实施例相关的手机700的部分结构的框图。参考图7,手机700包括、射频(radio frequency,RF)电路710、存储器720、其他输入设备730、显示屏740、传感器750、音频电路760、I/O子系统770、处理器780、以及电源790等部件。本领域技术人员可以理解,图7中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。本领域技术人员可以理解显示屏740属于用户界面(user interface,UI),且手机700可以包括比图示或者更少的用户界面。
下面结合图7对手机700的各个构成部件进行具体的介绍:
RF电路710可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器780处理;另外,将设计上行的数据发送给基站。通常,RF电路包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(low noiseamplifier,LNA)、双工器等。此外,RF电路710还可以通过无线通信与网络和其他设备通信。所述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(globalSystem of mobile communication,GSM)、通用分组无线服务(general packet radioservice,GPRS)、码分多址(code division multiple access,CDMA)、宽带码分多址(wideband code division multiple Access,WCDMA)、长期演进(long term evolution,LTE)、电子邮件、短消息服务(short messaging service,SMS)等。
存储器720可用于存储计算机程序,诸如图7所示的应用程序和操作系统;处理器可调用存储器存储的计算机程序,从而实现该计算机程序定义的功能。例如处理器执行操作系统从而在手机700上实现操作系统的各种功能。操作系统可以为或者其它操作系统,本申请实施例对此不作任何限制。存储器720可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图象播放功能等)等;存储数据区可存储根据手机700的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器720可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
其他输入设备730可用于接收输入的数字或字符信息,以及产生与手机700的用户设置以及功能控制有关的键信号输入。具体地,其他输入设备730可包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆、光鼠(光鼠是不显示可视输出的触摸敏感表面,或者是由触摸屏形成的触摸敏感表面的延伸)等中的一种或多种。其他输入设备730与I/O子系统770的其他输入设备控制器771相连接,在其他设备输入控制器771的控制下与处理器780进行信号交互。
显示屏740可用于显示由用户输入的信息或提供给用户的信息以及手机700的各种菜单,还可以接受用户输入。具体的显示屏740可包括显示面板741,以及触控面板742。其中显示面板741可以采用液晶显示器(liquid crystal display,LCD)、有机发光二极管(organic light-emitting diode,OLED)等形式来配置显示面板741。触控面板742,也称为触摸屏、触敏屏等,可收集用户在其上或附近的接触或者非接触操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板742上或在触控面板742附近的操作,也可以包括体感操作;该操作包括单点控制操作、多点控制操作等操作类型。),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板742可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位、姿势,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成处理器能够处理的信息,再送给处理器780,并能接收处理器780发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板742,也可以采用未来发展的任何技术实现触控面板742。进一步的,触控面板742可覆盖显示面板741,用户可以根据显示面板741显示的内容(该显示内容包括但不限于,软键盘、虚拟鼠标、虚拟按键、图标等等),在显示面板741上覆盖的触控面板742上或者附近进行操作,触控面板742检测到在其上或附近的操作后,通过I/O子系统770传送给处理器780以确定用户输入,随后处理器780根据用户输入通过I/O子系统770在显示面板741上提供相应的视觉输出。虽然在图7中,触控面板742与显示面板741是作为两个独立的部件来实现手机700的输入和输入功能,但是在某些实施例中,可以将触控面板742与显示面板741集成而实现手机700的输入和输出功能。
手机700还可包括至少一种传感器750,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板741的亮度,接近传感器可在手机700移动到耳边时,关闭显示面板741和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机700还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路760、扬声器761,麦克风762可提供用户与手机700之间的音频接口。音频电路760可将接收到的音频数据转换后的信号,传输到扬声器761,由扬声器761转换为声音信号输出;另一方面,麦克风762将收集的声音信号转换为信号,由音频电路760接收后转换为音频数据,再将音频数据输出至RF电路710以发送给比如另一手机,或者将音频数据输出至存储器720以便进一步处理。
I/O子系统770用来控制输入输出的外部设备,可以包括其他设备输入控制器771、传感器控制器772、显示控制器773。可选的,一个或多个其他输入控制设备控制器771从其他输入设备730接收信号和/或者向其他输入设备730发送信号,其他输入设备730可以包括物理按钮(按压按钮、摇臂按钮等)、拨号盘、滑动开关、操纵杆、点击滚轮、光鼠(光鼠是不显示可视输出的触摸敏感表面,或者是由触摸屏形成的触摸敏感表面的延伸)。值得说明的是,其他输入控制设备控制器771可以与任一个或者多个上述设备连接。所述I/O子系统770中的显示控制器773从显示屏740接收信号和/或者向显示屏740发送信号。显示屏740检测到用户输入后,显示控制器773将检测到的用户输入转换为与显示在显示屏740上的用户界面对象的交互,即实现人机交互。传感器控制器772可以从一个或者多个传感器750接收信号和/或者向一个或者多个传感器750发送信号。
处理器780是手机700的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器720内的软件程序和/或模块,以及调用存储在存储器720内的数据,执行手机700的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器780可包括一个或多个处理单元;优选的,处理器780可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器780中。
手机700还包括给各个部件供电的电源790(比如电池),优选的,电源可以通过电源管理系统与处理器780逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗等功能。
尽管未示出,手机700还可以包括摄像头、蓝牙模块等,在此不再赘述。
另外,图6所示的实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,在本申请各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
如图8所示为本申请实施例提供的内存管理装置800,其中,内存管理装置800可以是电子设备,例如终端,能够实现本申请实施例提供的方法中电子设备的功能;内存管理装置800也可以是能够支持终端实现本申请实施例提供的方法中电子设备的功能的装置。其中,该内存管理装置800可以为芯片系统。本申请实施例中,芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
内存管理装置800包括至少一个处理器820,用于实现或用于支持内存管理装置800实现本申请实施例提供的方法中电子设备的功能。示例性地,处理器820可以将内存中的部分数据迁移到外部存储器中,具体参见方法示例中的详细描述,此处不做赘述。
内存管理装置800还可以包括至少一个存储器830,用于存储程序指令和/或数据。存储器830和处理器820耦合。本申请实施例中的耦合是装置、单元或模块之间的间接耦合或通信连接,可以是电性,机械或其它的形式,用于装置、单元或模块之间的信息交互。处理器820可能和存储器830协同操作。处理器820可能执行存储器830中存储的程序指令。所述至少一个存储器中的至少一个可以包括于处理器中。
内存管理装置800还可以包括通信接口810,用于通过传输介质和其它设备进行通信,从而用于装置1800中的装置可以和其它设备进行通信。示例性地,该其它设备可以是终端。处理器820可以利用通信接口810收发数据。
本申请实施例中不限定上述通信接口810、处理器820以及存储器830之间的具体连接介质。本申请实施例在图8中以存储器830、处理器820以及通信接口810之间通过总线840连接,总线在图8中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
在本申请实施例中,处理器820可以是通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
在本申请实施例中,存储器830可以是非易失性存储器,比如硬盘(hard diskdrive,HDD)或固态硬盘(solid-state drive,SSD)等,还可以是易失性存储器(volatilememory),例如随机存取存储器(random-access memory,RAM)。存储器是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
本申请实施例中还提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行图4或图5所示的实施例中电子设备执行的方法。
本申请实施例中还提供一种计算机程序产品,包括指令,当其在计算机上运行时,使得计算机执行图4或图5所示的实施例中电子设备执行的方法。
本申请实施例提供了一种芯片系统,该芯片系统包括处理器,还可以包括存储器,用于实现前述方法中计算设备的功能。该芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
本申请实施例提供的方法中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、网络设备、用户设备或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,简称DSL)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机可以存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,数字视频光盘(digital video disc,简称DVD))、或者半导体介质(例如,SSD)等。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (18)
1.一种内存管理方法,其特征在于,包括:
检测电子设备的内存的剩余内存空间;
在所述剩余内容空间小于或等于第一阈值时,将所述内存中的部分数据迁移到所述电子设备的外部存储器中;
释放所述部分数据所占用的内存空间。
2.根据权利要求1所述的方法,其特征在于,检测电子设备的内存的剩余内存空间,包括但不限于如下方式中的一种或多种:
按照预设的检测周期,检测所述剩余内存空间;
在所述电子设备接收到运行新的应用程序的操作请求,且在运行所述新的应用程序之前,检测所述剩余内存空间;
在所述电子设备运行所述新的应用程序之后,检测所述剩余内存空间;
在所述电子设备接收到运行新的应用程序的操作请求,且运行所述新的应用程序所需的内存空间大于或等于第二阈值时,检测所述剩余内存空间;
在所述电子设备接收到运行新的应用程序的操作请求,且所述新的应用程序为预设类型的应用程序时,检测所述剩余内存空间。
3.根据权利要求1或2所述的方法,其特征在于,将所述内存中的部分数据迁移到所述电子设备的外部存储器中,包括:
将所述部分数据进行压缩处理,获得压缩后的数据;
将所述压缩后的数据迁移到所述外部存储器中。
4.根据权利要求1-3中任一项所述的方法,其特征在于,在将所述内存中的部分数据迁移到所述电子设备的外部存储器中之后,所述方法还包括:
在所述内存的剩余内存空间大于或等于第三阈值时,将所述部分数据从所述外部存储器迁移到所述内存中。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述方法还包括:
检测迁移到所述外部存储器中的数据的数据量;
在迁移到所述外部存储器的数据的数据量大于或等于第一数据量时,禁止向所述外部存储器迁移数据。
6.一种内存管理装置,其特征在于,包括:
检测模块,用于检测电子设备的内存的剩余内存空间;
处理模块,用于在所述剩余内容空间小于或等于第一阈值时,将所述内存中的部分数据迁移到所述电子设备的外部存储器中;以及,释放所述部分数据所占用的内存空间。
7.根据权利要求6所述的装置,其特征在于,所述检测模块用于:
按照预设的检测周期,检测所述剩余内存空间;或,
在所述电子设备接收到运行新的应用程序的操作请求,且在运行所述新的应用程序之前,检测所述剩余内存空间;或,
在所述电子设备运行所述新的应用程序之后,检测所述剩余内存空间;或,
在所述电子设备接收到运行新的应用程序的操作请求,且运行所述新的应用程序所需的内存空间大于或等于第二阈值时,检测所述剩余内存空间;或,
在所述电子设备接收到运行新的应用程序的操作请求,且所述新的应用程序为预设类型的应用程序时,检测所述剩余内存空间。
8.根据权利要求6或7所述的装置,其特征在于,所述处理模块用于:
将所述部分数据进行压缩处理,获得压缩后的数据;
将所述压缩后的数据迁移到所述外部存储器中。
9.根据权利要求6-8中任一项所述的装置,其特征在于,所述处理模块还用于:
在所述内存的剩余内存空间大于或等于第三阈值时,将所述部分数据从所述外部存储器迁移到所述内存中。
10.根据权利要求6-9中任一项所述的装置,其特征在于,
所述检测模块还用于,检测迁移到所述外部存储器中的数据的数据量;
所述处理模块还用于,在迁移到所述外部存储器的数据的数据量大于或等于第一数据量时,禁止向所述外部存储器迁移数据。
11.一种内存管理装置,其特征在于,包括接口和处理器,所述接口与所述处理器通信;其中,所述处理器,用于:
检测电子设备的内存的剩余内存空间;
在所述剩余内容空间小于或等于第一阈值时,将所述内存中的部分数据迁移到所述电子设备的外部存储器中;
释放所述部分数据所占用的内存空间。
12.根据权利要求11所述的装置,其特征在于,所述处理器用于:
按照预设的检测周期,检测所述剩余内存空间;或,
在所述电子设备接收到运行新的应用程序的操作请求,且在运行所述新的应用程序之前,检测所述剩余内存空间;或,
在所述电子设备运行所述新的应用程序之后,检测所述剩余内存空间;或,
在所述电子设备接收到运行新的应用程序的操作请求,且运行所述新的应用程序所需的内存空间大于或等于第二阈值时,检测所述剩余内存空间;或,
在所述电子设备接收到运行新的应用程序的操作请求,且所述新的应用程序为预设类型的应用程序时,检测所述剩余内存空间。
13.根据权利要求11或12所述的装置,其特征在于,所述处理器用于:
将所述部分数据进行压缩处理,获得压缩后的数据;
将所述压缩后的数据迁移到所述外部存储器中。
14.根据权利要求11-13中任一项所述的装置,其特征在于,所述处理器还用于:
在所述内存的剩余内存空间大于或等于第三阈值时,将所述部分数据从所述外部存储器迁移到所述内存中。
15.根据权利要求11-14中任一项所述的装置,其特征在于,所述处理器还用于:
检测迁移到所述外部存储器中的数据的数据量;
在迁移到所述外部存储器的数据的数据量大于或等于第一数据量时,禁止向所述外部存储器迁移数据。
16.一种计算机存储介质,其特征在于,所述计算机存储介质中存储有计算机可执行指令,所述计算机可执行指令在被所述计算机调用时用于使所述计算机执行上述权利要求1-5中任一项所述的方法。
17.一种包含指令的计算机程序产品,其特征在于,当其在计算机上运行时,使得计算机执行上述权利要求1-5中任一项所述的方法。
18.一种终端,其特征在于,所述终端包括处理器和存储器,所述存储器中存储有计算机可执行指令,所述计算机可执行指令在被所述处理器调用时用于使所述处理器执行上述权利要求1-5中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910938413.7A CN110865884A (zh) | 2019-09-30 | 2019-09-30 | 一种内存管理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910938413.7A CN110865884A (zh) | 2019-09-30 | 2019-09-30 | 一种内存管理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110865884A true CN110865884A (zh) | 2020-03-06 |
Family
ID=69652483
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910938413.7A Pending CN110865884A (zh) | 2019-09-30 | 2019-09-30 | 一种内存管理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110865884A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111580959A (zh) * | 2020-04-26 | 2020-08-25 | Oppo(重庆)智能科技有限公司 | 一种数据写入方法、数据写入装置、服务器及存储介质 |
CN111782144A (zh) * | 2020-06-23 | 2020-10-16 | 上海传英信息技术有限公司 | 智能终端、数据存储方法及计算机可读存储介质 |
WO2021197239A1 (zh) * | 2020-03-31 | 2021-10-07 | 华为技术有限公司 | 一种设备休眠方法及计算设备 |
CN113885787A (zh) * | 2021-06-08 | 2022-01-04 | 荣耀终端有限公司 | 一种存储器管理方法及电子设备 |
CN114257502A (zh) * | 2020-09-21 | 2022-03-29 | 华为终端有限公司 | 一种日志上报方法及装置 |
CN114442963A (zh) * | 2022-04-07 | 2022-05-06 | 中国信息通信研究院 | 固态硬盘的控制方法和装置 |
WO2023005783A1 (zh) * | 2021-07-26 | 2023-02-02 | 华为技术有限公司 | 数据处理方法及电子设备 |
CN116244067A (zh) * | 2021-06-10 | 2023-06-09 | 荣耀终端有限公司 | 虚拟内存管理方法和电子设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103618942A (zh) * | 2013-12-16 | 2014-03-05 | 乐视致新电子科技(天津)有限公司 | 智能电视及其浏览器网页视频的播放方法和装置 |
CN104281528A (zh) * | 2013-07-09 | 2015-01-14 | 浙江大华技术股份有限公司 | 一种数据存储方法及装置 |
CN104461737A (zh) * | 2014-12-10 | 2015-03-25 | 广东欧珀移动通信有限公司 | 一种内存管理方法和装置 |
CN104881241A (zh) * | 2014-02-28 | 2015-09-02 | 华为技术有限公司 | 交换操作的实现方法和装置 |
CN105094977A (zh) * | 2014-04-30 | 2015-11-25 | 广州市动景计算机科技有限公司 | 基于域名调整应用程序占用内存的方法及装置 |
CN105988875A (zh) * | 2015-03-04 | 2016-10-05 | 华为技术有限公司 | 一种运行进程的方法及装置 |
CN107291627A (zh) * | 2017-06-21 | 2017-10-24 | 联想(北京)有限公司 | 一种数据处理方法和电子设备 |
CN108932163A (zh) * | 2018-06-15 | 2018-12-04 | 奇酷互联网络科技(深圳)有限公司 | 内存管理方法、装置、可读存储介质及终端 |
-
2019
- 2019-09-30 CN CN201910938413.7A patent/CN110865884A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104281528A (zh) * | 2013-07-09 | 2015-01-14 | 浙江大华技术股份有限公司 | 一种数据存储方法及装置 |
CN103618942A (zh) * | 2013-12-16 | 2014-03-05 | 乐视致新电子科技(天津)有限公司 | 智能电视及其浏览器网页视频的播放方法和装置 |
CN104881241A (zh) * | 2014-02-28 | 2015-09-02 | 华为技术有限公司 | 交换操作的实现方法和装置 |
CN105094977A (zh) * | 2014-04-30 | 2015-11-25 | 广州市动景计算机科技有限公司 | 基于域名调整应用程序占用内存的方法及装置 |
CN104461737A (zh) * | 2014-12-10 | 2015-03-25 | 广东欧珀移动通信有限公司 | 一种内存管理方法和装置 |
CN105988875A (zh) * | 2015-03-04 | 2016-10-05 | 华为技术有限公司 | 一种运行进程的方法及装置 |
CN107291627A (zh) * | 2017-06-21 | 2017-10-24 | 联想(北京)有限公司 | 一种数据处理方法和电子设备 |
CN108932163A (zh) * | 2018-06-15 | 2018-12-04 | 奇酷互联网络科技(深圳)有限公司 | 内存管理方法、装置、可读存储介质及终端 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021197239A1 (zh) * | 2020-03-31 | 2021-10-07 | 华为技术有限公司 | 一种设备休眠方法及计算设备 |
CN111580959B (zh) * | 2020-04-26 | 2023-02-28 | Oppo(重庆)智能科技有限公司 | 一种数据写入方法、数据写入装置、服务器及存储介质 |
CN111580959A (zh) * | 2020-04-26 | 2020-08-25 | Oppo(重庆)智能科技有限公司 | 一种数据写入方法、数据写入装置、服务器及存储介质 |
CN111782144A (zh) * | 2020-06-23 | 2020-10-16 | 上海传英信息技术有限公司 | 智能终端、数据存储方法及计算机可读存储介质 |
CN114257502B (zh) * | 2020-09-21 | 2023-08-22 | 华为终端有限公司 | 一种日志上报方法及装置 |
CN114257502A (zh) * | 2020-09-21 | 2022-03-29 | 华为终端有限公司 | 一种日志上报方法及装置 |
CN116243850A (zh) * | 2021-06-08 | 2023-06-09 | 荣耀终端有限公司 | 一种存储器管理方法及电子设备 |
CN113885787A (zh) * | 2021-06-08 | 2022-01-04 | 荣耀终端有限公司 | 一种存储器管理方法及电子设备 |
CN116243850B (zh) * | 2021-06-08 | 2024-05-28 | 荣耀终端有限公司 | 一种存储器管理方法及电子设备 |
CN116244067A (zh) * | 2021-06-10 | 2023-06-09 | 荣耀终端有限公司 | 虚拟内存管理方法和电子设备 |
CN116244067B (zh) * | 2021-06-10 | 2024-05-03 | 荣耀终端有限公司 | 虚拟内存管理方法和电子设备 |
WO2023005783A1 (zh) * | 2021-07-26 | 2023-02-02 | 华为技术有限公司 | 数据处理方法及电子设备 |
CN114442963B (zh) * | 2022-04-07 | 2022-06-07 | 中国信息通信研究院 | 固态硬盘的控制方法和装置 |
CN114442963A (zh) * | 2022-04-07 | 2022-05-06 | 中国信息通信研究院 | 固态硬盘的控制方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110865884A (zh) | 一种内存管理方法及装置 | |
US10949012B2 (en) | Electronic device comprising force sensor | |
CN110888821B (zh) | 一种内存管理方法及装置 | |
KR102148948B1 (ko) | 전자 장치의 멀티 태스킹 방법 및 그 전자 장치 | |
WO2016090902A1 (zh) | 一种操作系统热切换的方法、装置及移动终端 | |
KR20180028857A (ko) | 전자 장치 및 전자 장치의 제어 방법 | |
CN108920195B (zh) | 开机处理方法及相关产品 | |
CN106371900B (zh) | 一种实现异步调用的数据处理方法及装置 | |
EP2993572A1 (en) | Method and apparatus for processing touch input | |
US11073942B2 (en) | Touch recognition method and electronic device executing same | |
WO2017206902A1 (zh) | 应用控制方法及相关设备 | |
US10268308B2 (en) | Input processing method and device | |
CN111736980A (zh) | 一种内存管理方法及装置 | |
US20200042371A1 (en) | Method for detecting memory leak and electronic device thereof | |
WO2017206915A1 (zh) | 处理器中内核运行配置的确定方法以及相关产品 | |
CN114153570A (zh) | 一种应用切换方法及装置 | |
US20170097725A1 (en) | Device and method for starting mobile terminal application and mobile terminal | |
US20200004578A1 (en) | Method for fingerprint recognition and related products | |
WO2015081905A1 (zh) | 数据更新的方法、用户端及数据更新系统 | |
WO2017206901A1 (zh) | 进程控制方法及相关设备 | |
JP2020537211A (ja) | アプリケーション管理方法および端末 | |
CN110837343A (zh) | 处理快照的方法、装置及终端 | |
CN111273955B (zh) | 热修复插件优化方法、装置、存储介质及电子设备 | |
CN111443803A (zh) | 模式切换方法、装置、存储介质及移动终端 | |
CN107341032B (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 |