一种内存管理的方法以及相关设备与流程

文档序号:18985646发布日期:2019-10-29 04:22阅读:149来源:国知局
一种内存管理的方法以及相关设备与流程
本申请涉及计算机领域,特别涉及一种内存管理的方法以及相关设备。
背景技术
:物理内存的碎片化,即内存页面不连续,一直是操作系统面临的重要问题之一,而一般的应用在运行时使用的大部分内存都需要为连续内存。为解决物理内存碎片化的问题,现有技术通常使用内存管理算法,例如,linux中的buddysystem(伙伴系统)的碎片整理算法,来将内存中的碎片(fragmentation)整理成连续内存,以满足应用的内存需求。现有的内存管理算法主要分为两类:同步内存碎片整理(memorydefragmentation)算法和异步内存碎片整理算法。其中,同步内存碎片整理算法是在为应用分配内存的过程中,若系统的可用连续内存无法满足应用需求时,触发内存碎片整理。异步内存碎片整理算法是在系统的可用连续内存低于设定阈值时,触发内存碎片整理。可以看出,现有的内存管理算法是基于特定事件被动触发内存碎片整理。比如同步内存碎片整理算法是在系统无法为当前应用分配连续内存时触发碎片整理,因此需要等待系统释放内存并整理出连续内存后才能完成内存分配,这样会大大增加内存分配的等待时间,影响当前应用的运行效率。而异步内存碎片整理算法是在系统可用连续内存低于预设阈值时触发内存碎片整理,并且整理到阈值之上就停止,当应用需要大量连续内存时,异步碎片整理无法及时满足应用的内存需求,从而进入同步内存碎片整理,同样会导致内存分配时间长的问题,影响应用的运行效率。技术实现要素:本申请提供一种内存管理的方法以及相关设备,基于应用场景和连续内存需求预测,主动进行内存碎片整理,以满足不同应用场景对连续内存的需求,减少内存分配的等待时间,提高应用运行效率。有鉴于此,本申请第一方面提供一种内存管理的方法,可以包括:终端设备获取从当前运行的第一应用场景切换到一个或多个第二应用场景中每个第二应用场景的切换概率,其中,该多个即为两个或两个以上;然后该终端设备根据该满足预设条件的切换概率以及该一个或多个第二应用场景中切换概率满足预设条件的每个第二应用场景所需的连续内存确定目标连续内存;若该终端设备上可用的连续内存小于该目标连续内存,则在该终端设备从第一应用场景切换到该一个或多个第二应用场景中的任一第二应用场景之前,该终端设备根据该目标连续内存进行内存碎片整理,以使该终端设备上可用的连续内存大于该目标连续内存。需要说明的是,本申请实施方式对终端设备上可用的连续内存等于目标连续内存的情况,可以进行内存碎片整理,也可以不进行内存碎片整理,具体根据实际设计需求调整,此处不作限定。在本申请实施例中,对终端设备即将切换的应用场景进行预测,获取从第一应用场景切换到每个第二应用场景的切换概率,并根据该满足预设条件的切换概率以及对应的第二应用场景所需连续内存确定目标连续内存,之后终端设备主动进行内存碎片整理,以使该终端设备上的可用连续内存大于该目标连续内存,以保障终端设备在切换应用场景时有足够的连续内存分配,无需等待终端设备切换应用场景时才进行内存碎片整理,提高终端设备切换应用场景时的效率。结合本申请第一方面,在本申请第一方面的第一种实施方式中,该终端设备进行内存碎片整理,可以包括:终端设备获取系统负载,并根据系统负载所处的范围确定内存碎片整理算法;然后根据该内存碎片整理算法对该终端设备的内存进行内存碎片整理,以提高终端设备上可用的连续内存。在本申请实施例中,可以通过终端设备的系统负载所处的范围确定内存碎片整理算法,还可以根据终端设备的系统负载动态调整内存碎片整理算法,进而可以合理利用终端设备的内存资源,降低内存碎片整理对终端设备运行应用场景的影响,提高终端设备切换应用场景的效率。结合本申请第一方面的第一种实施方式,在本申请第一方面的第二种实施方式中,该终端设备根据系统负载所处的范围确定内存碎片整理算法,包括:若该系统负载处于第一预设范围,则该终端设备确定该内存碎片整理算法为深度内存碎片整理算法;若该系统负载处于第二预设范围,则该终端设备确定该内存碎片整理算法为中度内存碎片整理算法;或若该系统负载处于第三预设范围,则该终端设备确定该内存碎片整理算法为轻度内存碎片整理算法。在本申请实施例中,根据终端设备的系统负载确定合适的内存碎片整理算法,动态调整内存碎片整理算法,包括深度内存碎片整理算法、中度内存碎片整理算法以及轻度内存碎片整理算法,在进行内存碎片整理的同时,降低对终端设备上正在运行的应用场景的影响,清理出终端设备的可用连续内存,提高终端设备切换应用场景的效率。例如,终端设备负载较高的情况下,可以通过轻度内存碎片整理算法进行内存碎片整理,以避免影响终端设备上正在运行的应用场景;或终端设备负载较低的情况下,可以通过深度内存碎片整理算法进行内存碎片整理,以合理利用终端设备的资源,同时不影响终端设备上其他进程或应用场景的运行。结合本申请第一方面、本申请第一方面的第一种实施方式或本申请第一方面的第二种实施方式,在本申请第一方面的第三种实施方式中,获取终端设备从第一应用场景切换到一个或多个第二应用场景的切换概率,可以包括:获取终端设备从该第一应用场景切换到该一个或多个第二应用场景中每个第二应用场景的历史切换次数;该终端设备根据该历史切换次数确定从该第一应用场景切换到该一个或多个第二应用场景中每个第二应用场景的切换概率。具体地,在本申请实施方式中,终端设备首先获取从第一应用场景切换到一个或多个第二应用场景的历史切换次数,然后根据该历史次数计算切换到每个第二应用场景的切换概率。该切换概率可以用于预测切换应用场景所需的连续内存,并根据该连续内存主动进行内存碎片整理,使终端设备上的可用连续内存满足切换应用场景所需的连续内存,提高终端设备切换应用场景的效率。结合本申请第一方面、本申请第一方面的第一种实施方式至本申请第一方面的第三种实施方式中任一种实施方式,在本申请第一方面的第四种实施方式中,根据该切换概率中满足预设条件的切换概率,以及该一个或多个第二应用场景中切换概率满足该预设条件的每个第二应用场景所需的连续内存确定目标连续内存,可以包括:该终端设备从该一个或多个第二应用场景中确定该切换概率大于阈值的第二应用场景;该终端设备根据该切换概率大于阈值的第二应用场景所需的连续内存确定该目标连续内存。在本申请实施方式中,滤除切换概率不大于阈值的第二应用场景,然后根据切换概率大于阈值的第二应用场景所需的连续内存确定目标连续内存,并使终端设备整理出大于目标连续内存的可用连续内存,以使终端设备上可用的连续内存更能保障即将切换的第二应用场景所需的连续内存。结合本申请第四种实施方式,在本申请第五种实施方式中,若从该一个或多个第二场景中确定切换概率大于所述阈值的第二应用场景有多个,该终端设备根据一个或多个该切换概率大于预置的第二应用场景所需的连续内存确定该目标连续内存,可以包括:该终端设备对该多个切换概率大于阈值的第二应用场景中每个第二应用场景的切换概率以及所需的连续内存进行加权运算,以得到该目标连续内存。其中,加权运算中的权重可以与该多个切换概率大于阈值的第二应用场景中每个第二应用场景的切换概率具有对应关系,例如,切换概率越高,所占的权重越大。在本申请实施方式中,可以通过对切换概率大于阈值的第二应用场景中每个第二应用场景的切换概率以及所需的连续内存进行加权运算,以使得到目标连续内存更加接近于终端设备即将切换的第二应用场景所需的连续内存,进而保障终端设备切换到第二应用场景所需的连续内存。结合本申请第四种实施方式,在本申请第六种实施方式中,该终端设备根据该一个或多个切换概率大于阈值的第二应用场景所需的连续内存确定该目标连续内存,包括:该终端设备从该一个或多个切换概率大于阈值的第二应用场景中确定所需连续内存最大的目标应用场景;并将该目标应用场景所需的连续内存作为该目标连续内存。在本申请实施方式中,可以将一个或多个切换概率大于阈值的第二应用场景中所需的最大连续内存作为目标连续内存,以此满足该切换概率大于阈值的第二应用场景中每个第二应用场景所需的连续内存,提高终端设备切换应用场景的效率。结合本申请第一方面、本申请第一方面的第一种实施方式至本申请第一方面的第六种实施方式中任一种实施方式,在本申请第一方面的第七种实施方式中,该方法还可以包括:当该终端设备从该第一应用场景切换到该一个或多个第二应用场景中的其中一个第二应用场景,且该终端设备上的可用连续内存不满足该其中一个第二应用场景所需的连续内存时,该终端设备通过轻度内存碎片整理算法对终端设备的内存碎片进行整理。在本申请实施方式中,终端设备可能出现意外的连续内存消耗,或终端设备上的可用连续内存低于目标连续内存时,终端设备在切换至第二应用场景时,也可以进行轻度内存碎片整理,快速整理出可用连续内存,以保障终端设备可以正常切换应用场景。本申请实施例第二方面提供了终端设备,该终端设备具有实现上述第一方面内存管理的方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。本申请实施例第三方面提供一种终端设备,可以包括:处理器、存储器、总线以及输入输出接口,该处理器、该存储器与该输入输出接口通过该总线连接;该存储器,用于存储程序代码;该处理器调用该存储器中的程序代码时执行本申请第一方面或第一方面任一实施方式提供的终端设备执行的步骤。本申请实施例第四方面提供一种存储介质,需要说明的是,本发的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产口的形式体现出来,该计算机软件产品存储在一个存储介质中,用于储存为上述设备所用的计算机软件指令,其包含用于执行上述第一方面至第二方面中任一方面为终端设备所设计的程序。该存储介质包括:u盘、移动硬盘、只读存储器(英文缩写rom,英文全称:read-onlymemory)、随机存取存储器(英文缩写:ram,英文全称:randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。本申请实施例第五方面提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行如本申请第一方面或第二方面任一可选实施方式中所述的方法。在本申请实施例中,若终端设备当前正在运行第一应用场景,此时终端设备可以获取从第一应用场景切换到一个或多个第二应用场景中每个第二场景的切换概率,并根据该一个或多个第二应用场景中切换概率满足预设条件的每个第二场景的切换概率以及该每个第二应用场景启动以及运行所需的连续内存确定目标连续内存,然后在终端设备从第一应用场景切换到任意一个第二应用场景之前,终端设备主动进行内存碎片整理,使终端设备上的可用连续内存的长度大于该目标连续内存的长度,以保障即将切换的第二应用场景所需的连续内存,提高终端设备切换以及运行第二应用场景的效率。附图说明图1为本申请实施例具体应用的场景示意图;图2为本申请实施例中内存页面示意图;图3为本申请实施例中内存管理的方法的框架图;图4为本申请实施例中内存管理的方法的一种流程示意图;图5为本申请实施例中内存管理的方法的另一种流程示意图;图6为本申请实施例中伙伴算法的一种示意图;图7为本申请实施例中内存管理的方法的另一种流程示意图;图8为本申请实施例中轻度内存碎片整理示意图;图9为本申请实施例中中度内存碎片整理示意图;图10为本申请实施例中深度内存碎片整理示意图;图11为本申请实施例中内存管理的方法的具体场景示意图;图12为本申请实施例中终端设备的一种实施例示意图;图13为本申请实施例中终端设备的另一种实施例示意图。具体实施方式本申请提供一种内存管理的方法以及相关设备,基于应用场景和连续内存需求预测,主动进行内存碎片整理(memorydefragmentation),以满足不同应用场景对连续内存的需求,减少内存分配的等待时间,提高应用运行效率。本申请实施例提供的内存管理设备的方法可以应用于终端设备,该终端设备可以是手机、平板电脑、车载移动装置、pda(personaldigitalassistant,个人数字助理)、相机或可穿戴设备等。当然,在以下实施例中,对该终端设备的具体形式不作任何限制。其中,终端设备可以搭载的系统可以包括或者其它操作系统等,本申请实施例对此不作任何限制。以搭载操作系统的终端设备100为例,如图1所示,终端设备100从逻辑上可划分为硬件层21、操作系统161,以及应用层31。硬件层21包括应用处理器101、微控制器单元103、调制调解器107、wi-fi模块111、传感器114、定位模块150等硬件资源。应用层31包括一个或多个应用程序,比如应用程序163,应用程序163可以为社交类应用、电子商务类应用、浏览器等任意类型的应用程序。操作系统161作为硬件层21和应用层31之间的软件中间件,是管理和控制硬件与软件资源的计算机程序。在一个实施例中,操作系统161包括内核23,硬件抽象层(hardwareabstractionlayer,hal)25、库和运行时(librariesandruntime)27以及框架(framework)29。其中,内核23用于提供底层系统组件和服务,例如:电源管理、内存管理、线程管理、硬件驱动程序等;硬件驱动程序包括wi-fi驱动、传感器驱动、定位模块驱动等。硬件抽象层25是对内核驱动程序的封装,向框架29提供接口,屏蔽低层的实现细节。硬件抽象层25运行在用户空间,而内核驱动程序运行在内核空间。库和运行时27也叫做运行时库,它为可执行程序在运行时提供所需要的库文件和执行环境。库与运行时27包括安卓运行时(androidruntime,art)271以及库273等。art271是能够把应用程序的字节码转换为机器码的虚拟机或虚拟机实例。库273是为可执行程序在运行时提供支持的程序库,包括浏览器引擎(比如webkit)、脚本执行引擎(比如javascript引擎)、图形处理引擎等。框架27用于为应用层31中的应用程序提供各种基础的公共组件和服务,比如窗口管理、位置管理等等。框架27可以包括电话管理器291,资源管理器293,位置管理器295等。以上描述的操作系统161的各个组件的功能均可以由应用处理器101执行存储器105中存储的程序来实现。所属领域的技术人员可以理解终端100可包括比图1所示的更少或更多的部件,图1所示的该终端设备仅包括与本申请实施例所公开的多个实现方式更加相关的部件。由上图1可知,终端设备上可以安装多个应用程序(简称为“应用”),且可以在多个应用之间进行切换,或在一个应用的多个场景,比如应用的不同功能、或界面等等,之间切换。当终端设备进行应用场景切换,包括在多个应用之间进行切换,或在一个应用内的多个场景中切换时,终端设备内存涉及到多个模块的运行,包括内存分配,以及内存的读写等。各个应用场景启动以及运行需要连续内存。其中,以一个具体应用场景切换为例,该终端设备上安装了浏览器、购物软件、游戏软件等应用。终端设备可以在多个应用场景之间切换,包括在该终端设备上安装的多个应用之间,或在应用内的各个场景,比如功能或用户界面之间进行切换。例如,从浏览器切换到购物软件,或从购物软件切换到拍照软件,又或是从拍照软件内的拍照场景切换到照片预览场景等。在终端设备进行应用场景的切换时,终端设备内部也涉及到内存的变化,每个应用场景的启动以及运行都需要内存。内存也可以包括多种划分方式,具体地,以linux系统为例,物理内存按固定页面划分内存,可以划分为多个内存页面,一个内存页面的大小可以为4kb。而一般应用场景运行时都需要连续内存,即连续的内存页面。内存页面可以分为可移动内存页面、不可移动内存页面以及可回收页面。可移动内存页面即可以随意移动,可以将该可移动内存页面所存储的数据移动到其他内存页面上。一般用户空间的应用程序所占用的页面属于可移动页面,应用程序与内存页面可通过页面映射。因此,只需要更新页表项,把原内存页面上所存储的数据复制到目标内存页面即可。一个内存页面也可能被多个进程共享,对应多个页表项。而物理内存在长期的内存分配以及释放后,形成了部分不可移动页面,即在内存中位置固定,无法移动到其他地方。核心内核所分配的页面大部分都属于不可移动页面,随着系统的运行时长越长,不可移动页面也将增加。可回收页面不能直接移动,但可以回收,包括应用程序从另外的内存页面重建了数据,则原内存页面上的数据就可以被回收。一般可回收页面可以被系统预置的内存回收进程回收。例如,映射文件的数据所占用的内存可以属于可回收页面,linux系统中的kswapd进程可以按照预置的规则,周期性的对可回收页面进行回收。当终端设备在进行应用场景切换时,将使用到连续内存。而随着系统的使用,物理内存将随着系统的运行被占用。例如,如图2所示,一段内存中可以包括多种内存页面,包括空闲内存页面,可回收内存页面,不可移动内存页面以及可移动内存页面等。因此,为保障终端设备上应用场景的正常运行,需要对内存进行内存碎片整理,以得到连续的空闲内存。其中,内存碎片整理是一个减少内存碎片数量的过程,内存碎片整理主要包括对可移动内存页面进行移动,或对可回收页面进行回收或移除等,以获得物理地址连续的空闲内存。因此,为确保终端设备上有足够可用的连续内存,以前述图中所述的终端设备为例,本申请实施例对操作系统部分作出了改进。具体可以涉及到操作系统中涉及到内存部分以及应用运行所需的部分,同时还涉及到终端设备内部的应用层部分,具体涉及到应用程序的切换过程。此外,图1中所述的各个功能模块,仅为部分模块,实际应用中终端设备可以包括多个与内存相关,以及与应用运行以及应用切换相关的模块,此处并不作限定。本申请实施例中内存管理的方法提供的具体的改进,可以包括在进行应用场景切换前,对即将切换的应用场景以及所需的连续内存进行预测,主动进行内存碎片整理,以整理出足够的连续内存。进而保障终端设备在切换应用场景时,可以为应用场景分配足够的连续内存。具体地,本申请实施例中内存管理的方法的框架如图3所示。终端设备在应用启动或进行应用场景切换之前,可以通过计算或学习的方式预测即将切换的应用场景所需的目标连续内存。然后终端设备根据该目标连续内存进行内存碎片整理,整理出可以使用的连续内存,使终端设备的可用连续内存大于该目标连续内存。其中,本申请各个实施例中的“应用场景”可以是终端设备上的应用,也可以是终端设备上某一应用内的场景,比如应用的功能、用户界面等。即本申请中应用场景的切换可以是终端设备上应用之间的切换,也可以是终端设备上某一应用内部的场景切换,具体此处不作限定。在终端设备切换应用场景之前,为即将切换的应用场景分配连续内存,以使终端设备满足该应用场景所需的连续内存,使该应用场景可以正常运行。其中,本申请提供的内存管理的方法为保障即将切换的应用场景的连续内存需求,终端设备可以在终端设备进行应用场景切换前预测即将切换的应用场景所需的目标连续内存,然后进行内存碎片整理。因此,在本申请实施例中,可以在终端设备进行应用场景切换之前整理出即将切换的应用场景所需的连续内存,以保障即将切换的应用场景运行时所需的连续内存,提高应用场景切换的效率。进一步地,本申请实施例中内存管理的方法的流程如图4所示,本申请内存管理的方法的流程示意图,包括:401、获取从第一应用场景切换到一个或多个第二应用场景中每个第二应用场景的切换概率。终端设备上可以包括一个或多个应用,该多个即指两个或两个以上。每个应用中可以包括多个应用场景。终端设备在运行时,可以在该多个应用场景中切换。若终端设备当前正在运行第一应用场景,终端设备可以获取从第一应用场景切换到该一个或多个第二应用场景中每个第二应用场景的切换概率,获取该切换概率的方式可以是根据该终端设备上进行应用场景切换的次数或深度学习等方式。例如,终端设备当前正在运行浏览器,即第一应用场景,则终端设备可以获取从该浏览器切换到相机、游戏、购物软件等一个或多个第二应用场景中每个第二应用场景的切换概率,如从该浏览器切换到相机的概率为15%,切换到购物软件的概率为23%,切换到游戏的概率为3%等。又例如,当在应用内部的各个场景中切换时,终端设备上正在运行微信中的聊天对话场景,即将切换到微信红包的概率为30%,切换到朋友圈场景的概率为50%等。在本申请实施例中,该第一应用场景与第二应用场景可以是不同的应用,也可以是不同的或相同的应用中的不同应用场景,可根据实际设计需求调整,具体此处不作限定。402、获取一个或多个第二应用场景中每个第二应用场景所需的连续内存。终端设备除了需要获取从第一应用场景切换到该一个或多个第二应用场景中每个应用场景的切换概率,还需要获取该一个或多个第二应用场景中每个第二应用场景所需的连续内存。例如,运行游戏需要60kb连续内存,运行相机需要500kb连续内存等。还可以是,获取该切换概率大于预设值的第二应用场景中每个第二应用场景所需的连续内存。应理解,若获取一个或多个第二应用场景中每个第二应用场景所需的连续内存,则在本申请实施例中,可以先执行步骤401,也可以先执行步骤402,具体此处不作限定。403、根据切换概率以及每个第二应用场景所需的连续内存确定目标连续内存。在确定切换到第二应用场景的切换概率以后,确定该切换概率中确定满足预设条件的切换概率,以及一个或多个第二应用场景中切换概率满足预设条件的每个第二应用场景所需的连续内存。终端设备可以根据该切换概率以及切换概率满足预设条件的每个第二应用场景所需的连续内存计算得到目标连续内存。终端设备可在终端设备切换到任意一个第二应用场景之前,进行内存碎片整理,使终端设备上可用的连续内存大于该目标连续内存,进而使终端设备在切换应用场景时,可以为应用场景分配足够的连续内存,保障终端设备从第一应用场景切换到其中一个第二应用场景所需的连续内存。具体计算目标连续内存的方式可以是,首先确定切换概率大于阈值的第二应用场景,若存在至少两个切换概率大于阈值的第二应用场景,对该至少两个切换概率大于阈值的第二应用场景中的每个第二应用场景的切换概率以及所需连续内存进行加权运算,得到该目标连续内存;也可以是,终端设备从该切换概率大于阈值的第二应用场景中确定需求的最大连续内存,然后将该最大连续内存作为目标连续内存等,具体可根据实际设计需求调整,此处不作限定。404、判断终端设备上可用的连续内存是否大于目标连续内存。在终端设备确定目标连续内存后,终端设备判断可用的连续内存是否大于目标连续内存,即判断终端设备上可用的连续内存的大小是否大于目标连续内存的大小。若可用的连续内存大于目标连续内存,则执行步骤405,若可用的连续内存不大于目标连续内存,则执行步骤406。其中,该可用的连续内存为终端设备上可以分配给第二应用场景的连续内存。405、执行其他步骤。若终端设备上可用的连续内存大于目标连续内存,则该终端设备上可用的连续内存可以保障即将从第一应用场景切换到其中一个第二应用场景所需的连续内存。此时终端设备可以进行内存碎片整理,也可以不进行内存碎片整理,具体可根据实际设计需求调整,此处不作限定。406、进行内存碎片整理。若终端设备上可用的连续内存小于或等于目标连续内存,为保障从第一应用场景切换到其中一个第二应用场景所需的连续内存,在终端设备从第一应用场景切换到第二应用场景之前,终端设备需要进行内存碎片整理,使终端设备上可用的连续内存不小于该目标连续内存,以保障终端设备在切换到第二应用场景时,有足够的连续内存可以分配。内存碎片整理的具体步骤可以是,对终端设备上的内存页面进行整理,对可移动页面进行移动,或可回收页面进行回收等,以整理出空闲的连续内存,该空闲的连续内存可以在终端设备进行应用场景切换的时候为切换的应用场景进行分配。需要说明的是,在本申请实施例中,若终端设备上可用的连续内存等于目标连续内存,除了可以进行内存碎片整理,也可以不进行内存碎片整理,具体可根据实际设计需求调整,此处不作限定。在本申请实施例中,首先确定终端设备从第一应用场景切换到一个或多个第二应用场景中每个第二应用场景的切换概率,然后根据该切换概率以及需求内存计算得到目标连续内存。之后根据该目标连续内存进行内存碎片整理,使终端设备上可用的连续内存不小于目标连续内存,以保障终端设备从第一应用场景切换到该一个或多个第二应用场景中的其中一个第二应用场景时,有足够的可用的连续内存。提高从第一应用场景切换到该一个或多个第二应用场景中的其中一个第二应用场景的效率。前述对本申请实施例中内存管理方法的流程进行了说明,下面对本申请实施例中内存管理方法的流程进行更进一步地阐述。首先对确定目标连续内存的具体步骤进行详细说明,请参阅图5,本申请实施例中内管管理的方法的另一种实施例示意图,包括:501、第一应用场景启动。该第一应用场景为终端设备当前正在运行的应用场景,当第一应用场景启动并正常运行后,终端设备接下来可以对即将切换到的应用场景进行预测,并提前整理出足够的连续内存,以保障切换的应用场景可以使用足够的连续内存,提高终端切换应用场景的效率。502、切换应用场景数据采集。终端设备可以采集应用场景切换的数据,例如,当前以前的24小时内,终端设备从应用场景a切换到应用场景b的次数,或应用场景a切换到应用场景c的次数等。具体的实施可以方式是,在终端设备内的场景启动函数中插入切换计数变量,对每次切换应用场景进行计数,例如,从微信的聊天场景切换到朋友圈场景等。503、确定应用场景关联关系。在对应用场景的切换次数进行采集后,可以通过应用场景之间的切换次数确定各个应用场景的关联关系,可以生成应用场景关联矩阵,可根据该应用场景关联矩阵确定即将切换的应用场景,即切换到第二应用场景的切换概率。切换概率的计算方式例如,从应用场景a切换到应用场景b为50次,从应用场景a切换到应用场景c为30次,从应用场景a切换到应用场景d为20次,那么,若当前运行应用场景a,即第一应用场景,切换到应用场景b的切换概率为50%,切换到应用场景c的切换概率为30%,切换到应用场景d的切换概率为20%。该应用场景b、应用场景c以及应用场景d即前述图4中的一个或多个第二应用场景。例如,在24小时以前,从应用场景a切换到应用场景b的次数为500次,从应用场景a切换到应用场景c的次数为100次。在实际应用中,若终端设备当前正在运行应用场景a,那么,从应用场景a切换到应用场景b的概率大于从应用场景a切换到应用场景c的概率。应用场景关联矩阵可以如下表1所示:应用场景a应用场景b应用场景c应用场景d应用场景e应用场景f应用场景a100102001应用场景b52030500应用场景c80200213应用场景d1062226应用场景e020000应用场景f003000表1其中,该应用场景关联矩阵用于表示中的设备从某个应用场景切换到另一个应用场景的次数。例如,表1第一行中,从应用场景a切换到应用场景b的次数未为100次,切换到应用场景c的次数为10次,切换到应用场景d的次数为20次,切换到应用场景e的次数为0次,切换到应用场景f的次数为1次,可以以此推算出从应用场景a切换到其他每个应用场景的概率。终端设备从应用场景a切换到应用场景b的概率大于切换到应用场景c、应用场景d、应用场景e以及应用场景f。且在进行切换应用场景数据采集时,每切换一次应用场景,都可以对该应用场景关联矩阵进行更新,以便实时对终端设备上的应用切换进行学习记录。具体地,在对原始记录进行更新时,可以通过取该原始记录与更新数据的平均值进行更新,也可以通过对原始记录与更新数据通过加权运算进行更新,具体此处不作限定。此外,在确定应用场景的关联关系时,每进行一次切换,则可以对该关联关系进行更新,以使终端设备可以根据更多历史切换数据预测即将切换的应用场景。历史切换数据越多,终端设备进行切换场景预测的准确性越高,因此终端设备可以通过更新应用场景关联关系提高预测的准确率,从而保障终端设备上清理出来的可用连续内存满足进行应用场景切换时所需的连续内存。504、应用场景连续内存采集。除了需要采集应用场景的切换次数,确定应用场景的切换概率外,还需要对每个应用场景运行所需的连续内存进行采集,即每个应用场景启动过程中的连续内存需求和应用场景运行时的连续内存需求,根据每个应用场景的连续内存需求可以识别出接下来的应用场景所需的连续内存需求。具体的实施可以方式是,在终端设备内的内存分配函数中插入切换计数变量,对每次内存分配的连续内存进行计数,每次分别在应用场景准备进入、进入完成和退出时获取一次计数。进入完成和准确进入时采集的连续内存差值即为该应用场景启动时的连续内存需求,退出和进入完成的差值即为该应用场景整体连续内存需求。此外,除了可以采集每个应用场景需求的连续内存,还可以采集从当前应用场景进行切换时切换概率大于阈值的应用场景需求的连续内存,例如,从当前应用场景进行切换时,切换概率大于10%的应用场景有10个,则可以仅采集此10个应用场景需求的连续内存,具体的采集情况可根据设计需求调整,具体此处不作限定。应理解,若在进行应用场景连续内存采集时无需使用步骤502采集到的应用场景切换数据,则本申请对步骤502与步骤504的执行顺序不作限定,可以先执行步骤502,也可以先执行步骤504,具体可根据实际设计需求调整,具体此处不作限定。在本申请实施例中,也可以对每个应用场景所需的连续内存进行记录,每次分配连续内存后,对每个应用场景所需的连续内存进行更新。可以是当前切换分配的连续内存与历史切换所分配的连续内存进行加权运算,也可以是用当前切换分配的连续内存替代历史切换所分配的连续内存记录,具体可以根据实际场景调整,此处不作限定。505、确定应用场景连续内存需求。在对应用场景的连续内存进行采集后,可以根据采集到的数据确定每个第二应用场景的连续内存需求,例如,可以根据每个第二应用场景启动过程中的连续内存需求和应用场景运行时的连续内存需求,确定从切换该第二应用场景到该应用场景运行时所需的连续内存需求。具体地,在linux系统中,通过伙伴(buddy)算法对内存碎片进行管理,系统内核在每个zone去管理者可用的内存页面,按2的幂级大小排列成链表队列,存放在free_area数据中。下面以一个具体的实施例进行说明,请参阅图6、本申请实施例中伙伴算法的示意图。其中,系统内存中有16个内存页面,包括内存页面0至内存页面15,即图6中的pages行中的0-15。该16个内存页面按2的幂级大小排列成链表队列。因仅有16个页面,因此仅需4个级别(order)就能确定该16个内存页面的位图,即图6中的order0至order3。高阶的连续内存可以通过低阶连续内存快速整理出来,低阶连续内存可以通过高阶连续内存进行快速分配。因此,在确定应用场景的连续内存需求时,可以通过buddy算法进行连续内存分配。具体的格式如表2所示:启动最大应用场景a100,order:2500,order:2应用场景b200,order:4500,order:4应用场景c100,order:81000,order:8应用场景d00应用场景e10,order:210,order:2应用场景f100,order:2500,order:2表2其中,启动应用场景a时,需要100个order2的内存页面,在应用场景a正常运行时,需要500个order2的内存页面;启动应用场景b时,需要200个order4的内存页面,在应用场景b正常运行时,需要500个order4的页面;启动应用场景c时,需要100个order8的内存页面,在应用场景c正常运行时,需要1000个order8的内存页面;启动应用场景d时,需要0个内存页面,在应用场景d正常运行时,需要0个内存页面;启动应用场景e时,需要10个order2的内存页面,在应用场景e正常运行时,需要10个order2的内存页面;启动应用场景f时,需要100个order2的内存页面,在应用场景f正常运行时,需要500个order2的内存页面,其他的应用场景以此类推。506、预测目标连续内存。在确定每个第二应用场景的切换概率以及每个第二应用场景所需的连续内存后,可以对即将切换的第二应用场景进行预测,同时预测所需的目标连续内存。其中可以通过应用场景关联矩阵确定从当前应用切换到其他应用场景的切换概率,可以通过设置一个阈值,将低于阈值的应用场景过滤掉,即可以将发送概率较低的应用场景过滤掉。例如,若应用场景a的切换概率低于10%,则过滤掉该应用场景a。确定目标连续内存的具体步骤可以是,首先滤除一个或多个第二应用场景中切换概率不大于阈值的第二应用场景。然后对切换概率大于阈值的第二应用场景的切换概率以及所需的连续内存进行加权运算,得到目标连续内存。具体地,该加权运算中的权重可以与每个第二应用场景所对应的切换概率具有对应关系。例如,切换概率较大的应用场景所占的权重也可以越大,即得到的目标连续内存更偏向于切换概率较大的第二应用场景所需的连续内存;还可以是将该切换概率大于阈值的第二应用场景中所需的最大的连续内存作为该目标连续内存,或通过其他算法得到目标连续内存,具体可根据实际设备需求进行调整,此处不作限定。507、启动内存碎片整理。在确定目标连续内存后,若终端设备上可用的连续内存不大于目标连续内存,即可主动进行内存碎片整理,以使终端设备上在切换到第二应用场景之前,终端设备上可用的连续内存大于目标连续内存。其中,具体的碎片整理方法在如下图7的实施例中详细说明。在本申请实施例中,通过提前预测切换到第二应用场景所需的目标连续内存,并提前进行内存碎片整理,以使终端设备上可用的连续内存大于目标连续内存,因此终端设备在从第一应用场景切换到第二应用场景时,可以使用足够的连续内存启动以及运行第二应用场景,从而减少终端设备切换到第二应用场景的等待时间,进而可以提高终端设备切换应用场景的效率。前述着重对本申请实施例中内存管理方法中确定目标连续内存的具体步骤进行了说明,在本申请提供的内存管理方法中,除了在应用场景切换前提前预测目标连续内存,并进行内存碎片整理外,为进一步提高内存碎片整理的效率,且不影响终端设备上正在运行的应用或进程等,本申请实施例还对内存整理的具体算法作出了改进,可通过动态调节进行内存碎片整理。下面对本申请实施例中内存管理方法中进行内存碎片整理的步骤进行详细阐述,请参阅图7,本申请实施例中内存管理的方法的另一个实施例示意图,可以包括:701、启动内存碎片整理。在终端设备通过预测的方式确定目标连续内存后,在切换至某一第二应用场景之前,终端设备可以启动内存碎片整理,以整理出可用的连续内存。具体在如下步骤702-步骤708中详细描述。702、计算当前可用连续内存,若满足目标连续内存,则执行步骤703,若不满足目标连续内存,则执行步骤704。在确定目标连续内存后,终端设备可以计算当前可用连续内存,即终端设备当前可分配给第二应用场景的连续内存。具体地,在linux系统中,可以从buddy系统中获取当前终端设备上所有的可用连续内存,并判断可用连续内存是否满足目标连续内存。若终端设备上的可用连续内存不满足目标连续内存,则执行步骤704,即进行快速整理内存,以使终端设备上的可用连续内存小于目标连续内存。若终端设备上的可用连续内存不小于目标连续内存,则终端设备可以进行不可移动页面密集区计算,即执行步骤703。703、计算不可移动页面密集区。在终端设备启动内存碎片整理时,或终端设备上的可用连续内存满足目标连续内存时,可以对不可移动页面密集区进行计算。其中,在预置的单位范围内,不可移动页面超过密集阈值,则认为该单位范围内为不可移动密集区。例如,若在1024个页面中,不可移动页面超过100个,则可以认为该1024个页面属于不可移动页面密集区。当不可以移动页面密集区大于密集阈值时,则可以执行步骤704。而当不可移动页面密集区不大于密集阈值时,可以停止进行内存碎片整理。需要说明的是,在本申请实施例中,可以对不可移动页面密集区进行计算,也可以不对不可移动页面密集区进行计算,即步骤703可以为可选步骤。在实际应用中,当终端设备未对目标连续内存进行计算时,也可以直接计算不可移动页面密集区。若不可移动页面密集区大于预设值,也可以进行快速整理连续内存,即通过轻度内存碎片整理算法进行内存碎片整理,轻度内存碎片整理算法在步骤704中进行详细说明。若不可移动页面密集区不大于预设值,可以继续进行通过轻度内存碎片整理算法快速进行内存碎片整理,也可以不进行内存碎片整理,具体可根据实际设计需求调整,此处不作限定。具体地,在终端设备进行内存碎片整理时,若遇到不可移动页面直接跳过,则当系统长时间运行后,不可以移动页面增加,内存碎片化程度大大提升,导致整理出大块连续内存的成功率减低,导致内存整理以及内存分配的速度下降,将降低终端设备的运行效率。因此,在本申请实施例中,对不可移动页面密集区进行计算,并在后续进行内存碎片整理,包括对包括了不可移动页面的区域进行整理,具体在后续步骤707以及步骤708中详细描述。因此,可以对包括不可移动页面区域进行整理,避免系统长时间运行后,因不可移动页面增加而降低内存碎片整理的效率以及成功率,可以提高终端设备进行内存碎片整理的效率以及成功率。704、快速整理连续内存。在终端设备上的可用连续内存不满足目标连续内存,或终端设备上不可移动密集区大于预设值时,终端设备快速整理连续内存。包括通过轻度内存碎片整理算法进行内存碎片整理,即可以对可移动页面区进行内存碎片整理。具体地,通过轻度内存碎片整理算法整理前的内存页面以及整理后的内存页面如图8所示,其中,可移动页面区为在预置单位范围内的内存页面不包括不可移动页面。例如,若在1024个页面中,不包括不可移动页面,则可以认为该1024个页面属于可移动页面区。通过轻度内存算法进行内存碎片整理,即对可移动页面区进行整理,将可移动页面区中的可移动页面都移动至一段连续内存上,以使空闲页面形成连续内存。例如,可移动页面区地址为0001-0100的内存页面中包括了不连续的20个可移动页面,那么,可以将该20个可移动页面统一移动至0001-0020上,因此地址为0020之后的内存页面都为空闲页面,以此整理出空闲的连续内存。因此,通过轻度内存碎片整理算法可以在终端设备上快速整理出空闲的连续内存,以保障终端设备进行应用场景切换时所需的连续内存。在实际应用中,可以通过轻度内存碎片整理算法快速整理出可用的连续内存,以保障在终端设备切换应用时有更多的可用连续内存可以分配。例如,若终端设备当前运行应用场景a,那么,若终端设备上当前的可用连续内存不满足应用场景a,或终端设备上的不可移动页面密集区大于预设值,则终端设备可以进行快速整理连续内存,对可移动页面区进行快速整理,快速整理出可用的连续内存。以此避免终端设备突然切换应用场景而连续内存不足,进而提高切换应用场景的效率以及可靠性。若不可以移动页面密集区大于预设值,则终端设备上的不可移动页面增加,可通过快速整理连续内存,使终端设备上有更多的连续内存可以为应用场景分配。705、获取系统负载。在进行快速整理连续内存后,可以增加终端设备上可用的连续内存,可以防止终端设备突然切换应用场景时可用连续内存不够的情况。若终端设备上的可用连续内存仍然不满足目标连续内存,或为更进一步地提高终端设备上的可用连续内存,可以进一步对内存碎片进行整理。具体可以通过获取终端设备的系统负载,根据终端设备的系统负载所处的范围对内存碎片整理算法进行动态调整,以合理利用终端设备的资源,且降低对终端设备上正在运行的应用场景的影响。该系统负载可以用于表示终端设备中的系统繁忙程度,可以是端设备上单位时间内正在运行或等待运行的进程所占的系数。例如,系统负载可以是单位时间内,终端设备的运行列队中的进程数量的平均值。具体地,在linux系统中,可以通过使用预置的查询指令,如uptime、top指令等,以查询终端设备的系统负载。终端设备的系统负载通常可以通过终端设备的中中央处理器(centralprocessingunit,cpu)的占用率或输入输出(input/output,io)的吞吐率表示。确定终端设备的系统负载的方式具体可以是,读取系统中cpu或io的节点,以此获取终端设备的系统负载。然后终端设备可以根据系统负载进行动态调节,即动态调节内存碎片的整理算法,分级实现内存碎片整理,提高终端设备进行内存碎片整理的效率,且降低进行内存碎片整理对终端设备上运行的应用场景的影响。具体地,若系统负载处于第一预设范围,则终端设备确定内存碎片整理算法为深度内存碎片整理算法,即执行步骤708;若系统负载处于第二预设范围,则终端设备确定内存碎片整理算法为中度内存碎片整理算法,即执行步骤707;或若系统负载处于第三预设范围,则终端设备确定内存碎片整理算法为轻度内存碎片整理算法,即执行步骤706。具体的分级内存整理算法如表3中所示:表3根据表3可知,具体地,当系统负载<20%时,此时系统负载不高,此时进行深度内存碎片整理算法不影响终端设备上当前运行的应用场景或其他应用场景的运行,深度整理算法包括对不可移动页面密集区、不可移动页面普通区以及可移动页面区进行内存碎片整理;当系统负载处于20%~40%时,终端设备进行中度内存碎片整理算法,相比深度内存碎片整理算法减少了不可移动页面密集区的整理,以降低进行内存碎片整理时系统的负载,可以避免影响终端设备上当前运行的应用场景或其他应用场景运行的效率;当系统负载处于40%~60%时,此时系统较为繁忙,可以进行轻度内存碎片整理,仅整理可移动页面区,以降低内存碎片整理对终端设备上当前运行的应用场景或其他应用场景的影响;当系统负载为>60%时,此时终端设备的系统繁忙,可以不进行内存碎片整理,以避免影响终端设备上正在运行的应用场景。需要说明的是,除了第一预设范围可以是<20%,第二预设范围为20%~40%,第三预设范围为40%~60%,第一预设范围、第二预设范围与第三预设范围还可以是其他值,具体可根据实际设计需求调整,此处不作限定。在本申请实施例中,可以根据系统负载确定不同的内存碎片整理算法,减少对终端设备上当前运行的应用场景或其他应用场景的影响,使终端设备上的应用场景正常运行,同时可以整理出可用的连续内存,提高终端设备进行内存切换时的效率。706、执行轻度内存碎片整理算法。当终端设备上的系统负载处于第三预设范围时,终端设备执行轻度内存碎片整理算法,对可移动页面区进行整理。其中,进行内存碎片整理的步骤与前述步骤704中快速整理连续内存中的轻度内存碎片整理算法类似,具体此处不再赘述。在本申请实施例中,当系统负载处于第三预设范围时,执行轻度内存碎片整理算法,该第三预设范围可以是系统负载较高的情况下,可以避免对终端设备上正在运行的其他应用场景的影响。707、执行中度内存碎片整理算法;当终端设备上的系统负载处于第二预设范围时,执行中度内存碎片整理算法,对不可移动页面普通区以及可移动页面区进行内存碎片整理。其中,对于可移动页面区的整理方式与前述步骤704中快速整理连续内存中的轻度内存碎片整理算法类似,具体此处不再赘述。在预置的单位范围内,不可移动页面大于0且不超过密集阈值,则认为该单位范围内为不可移动普通区。例如,若在1024个页面中,不可移动页面不超过100个,且大于0个,则可以认为该1024个页面属于不可移动页面普通区。对不可移动页面普通区的内存整理具体可以如图9所示,将不可移动页面普通区中的可移动页面进行整理,使可移动页面处于连续的内存页面中,以此整理出连续页面。其中,可以将可移动页面可以移动到空闲的连续内存中,也可以移动到与不可移动页面相邻的连续内存中,具体可根据实际设计需求调整,此处不作限定。因此,在本申请实施例中,当终端设备的系统负载处于第二预设范围时,此时终端设备处于系统负载适中的情况,可以进行中度内存碎片整理算法,仅对不可移动页面普通区以及可移动页面区进行整理,以适应中度设备的系统负载,提高终端设备的运行效率,且可以提前整理出可用连续内存。在本申请实施例中,对不可移动页面进行整理,避免系统长时间运行后,因不可移动页面增加而降低内存碎片整理的效率以及成功率,可以提高终端设备进行内存碎片整理的效率以及成功率。708、执行深度内存碎片整理算法。当终端设备上的系统负载处于第一预设范围时,终端设备可以执行深度内存碎片整理算法,包括对不可移动页面密集区、不可移动页面普通区以及可移动页面区进行内存碎片整理。其中对可移动页面区进行内存碎片整理与前述步骤704中快速整理连续内存中的轻度内存碎片整理算法类似,其中对不可移动页面普通区进行内存碎片整理与前述步骤707中的中度内存碎片整理算法类似,具体此处不再赘述。对不可移动页面密集区的内存碎片整理的具体可以如图10所示,可以将不可移动页面密集区的可移动页面移动到不可移动页面密集区的空闲内存上,以增加终端设备上可用连续内存。具体地,可以将不可移动页面密集区的可移动页面移动到不可移动页面之间间隔的空闲内存页面上。当同时对可移动页面区、不可移动页普通区以及不可移动页面密集区进行整理时,可以将可移动页面移动到不可移动页面之间间隔的空闲内存页面上,以整理出更多的空闲内存页面。且不可移动页面普通区以及不可移动页面密集区进行整理,避免系统长时间运行后,因不可移动页面增加而降低内存碎片整理的效率以及成功率。可以降低终端设备在系统长时间运行后的内存碎片严重化程度,可以提高终端设备进行内存碎片整理的效率以及成功率。此外,在本申请实施例中,当终端设备从第一应用场景切换到第二应用场景时,若终端设备上的可用连续内存不足以启动或运行该第二应用场景,则终端设备可以进行快速内存整理。例如执行轻度内存碎片整理算法,以使终端设备上的可用连续内存满足该第二应用场景所需的连续内存。例如,终端设备当前运行第一应用场景,在对即将切换的第二应用场景进行预测,并得到目标连续内存后,终端设备上因连续内存不足,需要进行内存碎片整理。在进行内存碎片整理时或进行内存碎片整理之前,若终端设备此时切换到第二应用场景,则此时终端设备也可以启用轻度内存碎片整理算法,快速清理出可用内存,以保障终端设备可以正常启动运行第二应用场景。在本申请实施例中,通过预测的方式确定目标连续内存后,再主动进行内存碎片整理,以清理出不小于目标连续内存的可用连续内存,以保障终端设备可以正常切换应用场景。在进行内存碎片整理时,首先进行快速内存碎片整理,以快速得到可用连续内存,保障终端设备切换时的连续内存需求。更进一步的,在进行快速内存碎片整理后,若此时还未切换到第二应用场景,则终端设备可以进一步地根据系统负载进行内存碎片整理,根据终端设备的系统负载对内存整理算法进行动态调整,以进一步提高终端设备上的可用连续内存。避免终端设备在系统长时间运行后,不可以移动页增加,内存碎片化严重程度提升,整理出连续内存的成功率低,导致的内存分配速度下降。且可以对终端设备的资源进行合理利用,降低对终端设备上正在运行的应用场景的影响,提高终端设备切换应用场景的效率以及可靠性。前述对本申请提供的内存管理的方法进行了详细说明,具体地,本申请实施例中的终端设备可以是智能手机、平板电脑、车载移动装置、pda(personaldigitalassistant,个人数字助理)、相机或各种穿戴设备等,具体此处不作限定。下面以终端设备中的具体应用场景为例进行更进一步地说明。请参阅图11,本申请实施例中内存管理的方法的一个具体的切换场景示意图。其中,以该终端设备为智能手机为例,该智能手机中安装了多个应用,其中包括微信以及相机,当用户在使用该智能手机时,可以从微信切换到相机进行拍照。当终端设备从微信切换到相机时,首先进行启动相机,然后进入相机预览,之后才进行相机拍照。其中,在相机预览场景和相机拍照场景都会使用到大量连续内存,若在内存低于一定的阈值才执行内存清理,那么在对相机预览场景和相机拍照场景分配连续内存时,若连续内存不足,此时才进行内存碎片整理将导致等待较长时间分配内存,因此导致终端设备卡顿,影响用户体验。因此,为提高智能手机的运行效率,本申请提供的内存管理的方法的具体步骤可以包括:当智能手机当前正在运行微信,此时,终端设备对从微信切换到其他应用场景的次数进行采集,得到从微信切换到相机的切换次数。具体的采集方式可以是,对每次从微信切换到其他应用场景进行记录。例如,从微信切换到相机的次数为100次,从微信切换到应用市场的次数为2次等。然后分别采集智能手机上每个应用或应用场景在启动以及运行时所需的连续内存,包括相机的相机预览场景以及相机拍照场景运行所需的连续内存大小。具体的采集方式可以是,在智能手机内的内存分配函数中插入切换计数变量,对每次内存分配的连续内存进行计数,每次分别在相机准备进入、进入完成和退出时获取一次计数,进入完成和准确进入时采集的连续内存差值即为该相机启动时的连续内存需求,退出和进入完成的差值即为该相机整体连续内存需求。在对从微信切换到其他应用以及应用场景的次数进行采集时,可以同时更新从微信切换到其他应用或应用场景的次数,以便后续对相机切换信息进行采集。在采集到相机的连续内存后,也可以对相机所需的连续内存进行更新,以使智能手机根据历史记录数据与采集到的数据确定该相机的连续内存需求。在确定相机的切换信息以及相机的关联信息后,可以对当前从微信切换到其他应用或应用场景的概率,其中,可以确定从微信切换到相机的概率为90%,此时智能手机可以预测即将切换到相机场景。对于预测相机启动的概率,智能手机启动相机的样本越多,预测的概率越准确,预测的效率也越高。例如,采样样本超过10万条即可在进入微信时即可预测出启动相机的概率,若采样样本仅1条,则只能在进入相机时进行预测。而对于相机连续内存需求,仅需一条样本即可预测。在智能手机预测即将切换到相机场景后,识别出相机启动以及运行所需的连续内存,包括相机预览以及相机拍照所需的连续内存。随后启动内存碎片整理。首先计算智能手机上当前的可用连续内存,若智能手机上当前的可用连续内存不大于相机启动以及运行所需的连续内存,则智能手机可以快速内存碎片整理,若智能手机上当前的可用连续内存大于相机启动以及运行所需的连续内存,或智能手机在未比较可用连续内存与相机启动以及运行所需的连续内存时,智能手机可计算当前不可移动页面密集区,若当前不可移动页面密集区大于预设值,智能手机当前的内存碎片化程度严重,则智能手机也可以进行后续的内存碎片整理步骤,首先进行快速内存碎片整理。快速内存碎片整理可以是执行轻度内存碎片整理算法对智能手机上的内存碎片进行整理,首先快速整理出相机预览场景所需的连续内存,然后整理出相机进行拍照时所需的连续内存。在快速内存碎片整理完成后,可以继续获取智能手机的系统负载,然后根据智能手机的系统负载动态调整内存碎片整理算法,例如,在系统负载小于20%时,执行深度内存碎片整理算法,对不可移动页面密集区、不可移动页面普通区以及可移动页面区进行整理,其中,具体的整理算法与前述图7中的步骤706-步骤708类似,具体此处不再赘述;若系统负载处于20%-40%,此时可以执行中度内存碎片整理算法,对不可移动页面普通区以及可移动页面区进行内存碎片整理;若系统负载处于40%-60%,此时可以执行中度内存碎片整理算法,对可移动页面区进行内存碎片整理;若系统负载大于60%,则可以不执行内存碎片整理,以避免影响智能手机上的正在运行的应用。前述对本申请实施例中提供的内存管理的方法进行了详细说明,此外,本申请实施例还提供了实施干内存管理的方法的终端设备,请参阅图12,本申请实施例中终端设备的一个实施例示意图,可以包括:数据采集模块1201,用于获取从第一应用场景切换到一个或多个第二应用场景中每个第二应用场景的切换概率,该第一应用场景为该终端设备当前所运行的应用场景,具体可以用于实现前述图4实施例中步骤401的具体步骤;连续内存需求识别模块1202,用于根据该切换概率中满足预设条件的切换概率以及该一个或多个第二应用场景中切换概率满足预设条件的每个第二应用场景所需的连续内存确定目标连续内存,具体可以用于实现前述图4实施例中步骤403的具体步骤;主动内存碎片整理模块1203,若该终端设备上可用的连续内存不大于该目标连续内存,则在该终端设备从第一应用场景切换到该一个或多个第二应用场景中的任一第二应用场景之前,用于根据该目标连续内存进行内存碎片整理,以使该终端设备上可用的连续内存大于该目标连续内存,具体可以用于实现前述图4实施例中步骤406的具体步骤。在一些可能的实施方式中,该主动内存碎片整理模块1203,具体用于:根据系统负载确定内存碎片整理算法;根据该内存碎片整理算法以及该目标连续内存进行内存碎片整理;具体可以用于实现前述图7实施例中步骤705以及相关步骤中的具体步骤。在一些可能的实施方式中,该主动内存碎片整理模块1203,具体还用于:若该系统负载处于第一预设范围,则确定该内存碎片整理算法为深度内存碎片整理算法;若该系统负载处于第二预设范围,则确定该内存碎片整理算法为中度内存碎片整理算法;或若该系统负载处于第三预设范围,则确定该内存碎片整理算法为轻度内存碎片整理算法;具体可以用于实现前述图7实施例中步骤705-步骤708中的具体步骤。在一些可能的实施方式中,该数据采集模块1201,具体用于:获取从该第一应用场景切换到该一个或多个第二应用场景中每个第二应用场景的历史切换次数;根据该历史切换次数确定从该第一应用场景切换到该一个或多个第二应用场景中每个第二应用场景的切换概率;具体可以用于实现前述图5实施例中步骤502中的具体步骤。在一些可能的实施方式中,该连续内存需求识别模块1202,具体用于:从该一个或多个第二应用场景中确定该切换概率大于阈值的第二应用场景;根据该切换概率大于阈值的第二应用场景所需的连续内存确定该目标连续内存,具体可以用于实现前述图5实施例中步骤506中的具体步骤。在一些可能的实施方式中,该连续内存需求识别模块1202,具体还用于:若存在多个切换概率大于阈值的第二应用场景,对该多个切换概率大于阈值的第二应用场景中每个第二应用场景的切换概率以及所需的连续内存进行加权运算,以得到该目标连续内存,具体可以用于实现前述图5实施例中步骤506中的具体步骤。在一些可能的实施方式中,该连续内存需求识别模块1202,具体用于:该终端设备从所述终端设备从该一个或多个切换概率大于阈值的第二应用场景中确定所需连续内存最大的目标应用场景;该终端设备将该目标应用场景所需的连续内存作为该目标连续内存,具体可以用于实现前述图5实施例中步骤506中的具体步骤。在一些可能的实施方式中,该主动内存碎片整理模块1203,还用于:当该终端设备从该第一应用场景切换到该一个或多个第二应用场景中的其中一个第二应用场景,且该终端设备上的可用连续内存不满足该其中一个第二应用场景所需的连续内存时,该终端设备通过快速内存碎片整理算法对内存碎片进行整理,具体可以用于实现前述图7实施例中步骤704中的具体步骤。本申请实施例还提供了一种终端设备,如图13所示,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该终端设备可以为包括手机、平板电脑、pda(personaldigitalassistant,个人数字助理)、pos(pointofsales,销售终端)、车载电脑等任意终端设备,以终端设备为手机为例:图13示出的是与本发明实施例提供的终端相关的手机的部分结构的框图。参考图13,手机包括:射频(radiofrequency,rf)电路1310、存储器1320、输入单元1330、显示单元1340、传感器1350、音频电路1360、无线保真(wirelessfidelity,wifi)模块1370、处理器1380、以及电源1390等部件。本领域技术人员可以理解,图13中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。下面结合图13对手机的各个构成部件进行具体的介绍:rf电路1310可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器1380处理;另外,将设计上行的数据发送给基站。通常,rf电路1310包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(lownoiseamplifier,lna)、双工器等。此外,rf电路1310还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(globalsystemofmobilecommunication,gsm)、通用分组无线服务(generalpacketradioservice,gprs)、码分多址(codedivisionmultipleaccess,cdma)、宽带码分多址(widebandcodedivisionmultipleaccess,wcdma)、长期演进(longtermevolution,lte)、电子邮件、短消息服务(shortmessagingservice,sms)等。存储器1320可用于存储软件程序以及模块,处理器1380通过运行存储在存储器1320的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器1320可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器1320可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。输入单元1330可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元1330可包括触控面板1331以及其他输入设备1332。触控面板1331,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板1331上或在触控面板1331附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板1331可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器1380,并能接收处理器1380发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板1331。除了触控面板1331,输入单元1330还可以包括其他输入设备1313。具体地,其他输入设备1313可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。显示单元1340可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元1340可包括显示面板1341,可选的,可以采用液晶显示器(liquidcrystaldisplay,lcd)、有机发光二极管(organiclight-emittingdiode,oled)等形式来配置显示面板1341。进一步的,触控面板1331可覆盖显示面板1341,当触控面板1331检测到在其上或附近的触摸操作后,传送给处理器1380以确定触摸事件的类型,随后处理器1380根据触摸事件的类型在显示面板1341上提供相应的视觉输出。虽然在图13中,触控面板1331与显示面板1341是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板1331与显示面板1341集成而实现手机的输入和输出功能。手机还可包括至少一种传感器1350,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板1341的亮度,接近传感器可在手机移动到耳边时,关闭显示面板1341和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。音频电路1360、扬声器1361,传声器1362可提供用户与手机之间的音频接口。音频电路1360可将接收到的音频数据转换后的电信号,传输到扬声器1361,由扬声器1361转换为声音信号输出;另一方面,传声器1362将收集的声音信号转换为电信号,由音频电路1360接收后转换为音频数据,再将音频数据输出处理器1380处理后,经rf电路1310以发送给比如另一手机,或者将音频数据输出至存储器1320以便进一步处理。wifi属于短距离无线传输技术,手机通过wifi模块1370可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图13示出了wifi模块1370,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。处理器1380是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器1320内的软件程序和/或模块,以及调用存储在存储器1320内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器1380可包括一个或多个处理单元;优选的,处理器1380可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1380中。该处理器1380可以执行前述图3至图13中由终端设备执行的具体步骤。手机还包括给各个部件供电的电源1390(比如电池),优选的,电源可以通过电源管理系统与处理器1380逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请图3至图11中各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1