数据存储方法、装置、移动终端及存储介质与流程

文档序号:19879078发布日期:2020-02-08 06:46阅读:160来源:国知局
数据存储方法、装置、移动终端及存储介质与流程

本申请涉及移动终端技术领域,更具体地,涉及一种数据存储方法、装置、移动终端及存储介质。



背景技术:

移动终端,例如手机、平板电脑等,已经成为人们日常生活中最常用的消费型电子产品之一。在移动终端中,内存一般由dram(dynamicrandomaccessmemory,动态随机访问存储器)构成,由于dram集成度低,容量有限。随着用户需求的增加,移动终端中的应用程序越来越多,因此其内存空间的利用成为了研究问题。



技术实现要素:

鉴于上述问题,本申请提出了一种数据存储方法、装置、移动终端及存储介质,以改善上述问题。

第一方面,本申请实施例提供了一种数据存储方法,所述方法包括:获取内存中当前已被压缩的内存页;获取所述内存页的历史使用数据;根据所述历史使用数据,获取所述内存页中满足历史使用条件的内存页,作为目标内存页;对所述目标内存页再次进行压缩并存储。

第二方面,本申请实施例提供了一种数据存储装置,所述装置包括:第一内存页获取模块、使用数据获取模块、第二内存页获取模块以及内存页压缩模块,其中,所述第一内存页获取模块用于获取内存中当前已被压缩的内存页;所述使用数据获取模块用于获取所述内存页的历史使用数据;所述第二内存页获取模块用于根据所述历史使用数据,获取所述内存页中满足历史使用条件的内存页,作为目标内存页;所述内存页压缩模块用于对所述目标内存页再次进行压缩并存储。

第三方面,本申请实施例提供了一种移动终端,包括:一个或多个处理器;存储器;一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行上述第一方面提供的数据存储方法。

第四方面,本申请实施例提供了一种计算机可读取存储介质,所述计算机可读取存储介质中存储有程序代码,所述程序代码可被处理器调用执行上述第一方面提供的数据存储方法。

本申请提供的方案,通过获取内存中当前已被压缩的内存页,获取内存页的历史使用数据,根据历史使用数据,获取内存页中满足历史使用条件的内存页,作为目标内存页,对目标内存页再次进行压缩并存储,从而实现对内存页的深度压缩,可以节省内存空间,提升内存利用率。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出了根据本申请一个实施例的数据存储方法流程图。

图2示出了根据本申请另一个实施例的数据存储方法流程图。

图3示出了根据本申请又一个实施例的数据存储方法流程图。

图4示出了根据本申请再一个实施例的数据存储方法流程图。

图5示出了根据本申请一个实施例的数据存储装置的一种框图。

图6示出了根据本申请一个实施例的数据存储装置中第二内存页获取模块的框图。

图7示出了根据本申请一个实施例的数据存储装置的另一种框图。

图8示出了根据本申请一个实施例的数据存储装置中内存页压缩模块的框图。

图9是本申请实施例的用于执行根据本申请实施例的数据存储方法的移动终端的框图。

图10是本申请实施例的用于保存或者携带实现根据本申请实施例的数据存储方法的程序代码的存储单元。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。

移动终端中,内存是重要的部件之一,内存是与cpu进行沟通的桥梁。移动终端中所有程序的运行都是在内存中进行的,因此内存的性能对移动终端的影响较大。内存一般由dram(dynamicrandomaccessmemory,动态随机访问存储器)构成,由于dram集成度低,容量有限。

随着科技水平的发展,以及人们的需求不断增多,移动终端上安装的应用程序(application,app)越来越丰富。然而,各种应用程序的缓存以及无用进程的后台运行,会使移动终端的可用内存变得越来越少,出现内存不足的问题。传统的对内存进行管理的方式是,移动终端的内核会将一些内存页进行压缩后存放在内存,从而节省内存占用。

发明人经过长时间的研究发现,传统方式中虽然对一些内存页进行了压缩,但是这依然占据较大的内存空间。

针对上述问题,发明人提出了本申请实施例提供的数据存储方法、装置、移动终端以及存储介质,可以对内存中当前已被压缩的内存页中满足历史使用条件的内存页,进行再次压缩,从而节省内存空间,提升内存利用率。其中,具体的数据存储方法在后续的实施例中进行详细的说明。

请参阅图1,图1示出了本申请一个实施例提供的数据存储方法的流程示意图。所述数据存储方法用于对内存中当前已被压缩的内存页中满足历史使用条件的内存页,进行再次压缩,从而节省内存空间,提升内存利用率。在具体的实施例中,所述数据存储方法应用于如图5所示的数据存储装置400以及配置有所述数据存储装置400的移动终端100(图9)。下面将以移动终端为例,说明本实施例的具体流程,当然,可以理解的,本实施例所应用的移动终端可以为智能手机、平板电脑、电子书、智能手表等,在此不做限定。下面将针对图1所示的流程进行详细的阐述,所述数据存储方法具体可以包括以下步骤:

步骤s110:获取内存中当前已被压缩的内存页。

在本申请实施例中,当前已被压缩的内存页表示此前已经被压缩后保存于内存中的内存页。内存(又称随机存取存储器,randomaccessmemory,ram)表示运行程序时使用的内存(即运行内存),只能临时存储数据,用于与处理器交换高速缓存数据,但是内存本身不能用于长期存储数据。应用在运行的状态下需要占用内存空间来存储运行过程中的数据,不同的应用在不同的运行状态占用的内存空间大小不一定相同。内存页是操作系统对内存进行管理的单位,其中,内存页占据的单位内存大小可以不作为限定,不同的移动终端设置的内存页占据的单位内存大小可以不同。

内存页可以包括匿名页、文件页等,在此不做限定。其中,匿名页指没有文件背景的页面,例如堆、栈、数据段等;文件页指有文件背景的页面,程序去读文件后在内存中产生的缓存,文件页也叫文件缓存。通常移动终端的系统内核会将一些内存页进行压缩后存放在内存中,以节省内存占用,因此,内存中通常会存在被压缩后的内存页。例如,对最近最少使用的匿名页进行压缩后存放在内存中。

在一些实施方式中,移动终端可以对内存页被压缩的操作进行记录,从而记录到被压缩过的内存页,移动终端根据对内存页的压缩记录,即可获取到当前已被压缩的内存页。

在另一些实施方式中,移动终端可以对被压缩后的内存页添加标记,例如,对内存页的名称进行标记等,在此不做限定。移动终端获取内存中存在的内存页,再根据该标记,即可获取到内存中当前已被压缩的内存页。

当然,移动终端获取内存中当前已被压缩的内存页的方式可以不作为限定。

作为一种实施方式,移动终端可以每间隔设定时长,获取内存中当前已被压缩的内存页,以从这些内存页中确定后续可以再次被压缩的内存页,对确定的内存页再次进行压缩,也就是说,每间隔设定时长执行一次本申请实施例提供的数据存储方法。

作为另一种实施方式,移动终端也可以根据用户输入的触发指令,执行获取内存中当前已被压缩的内存页,以从这些内存页中确定后续可以再次被压缩的内存页,对确定的内存页再次进行压缩,也就是说,根据用户的触发指令执行本申请实施例提供的数据存储方法。

当然,具体触发步骤s110的方式在本申请实施例中可以不作为限定。

步骤s120:获取所述内存页的历史使用数据。

移动终端可以对内存页的历史使用数据进行记录,以便可以根据记录对内存页进行管理。在一些实施方式中,移动终端可以对内存页的使用时间、使用次数、使用时长等进行记录,从而记录到内存页的历史使用数据。例如,移动终端可以根据对内存页的地址的访问,从而根据访问的时间、次数以及时长等,确定出对内存页的使用时间、使用次数、使用时长等。当然,具体的历史使用数据在本申请实施例中可以不作为限定。其中,历史使用时间可以为内存页每次被使用时的时间,历史使用次数可以为内存页被使用的总次数,历史使用时长可以为内存页被使用的总时长。

步骤s130:根据所述历史使用数据,获取所述内存页中满足历史使用条件的内存页,作为目标内存页。

移动终端在获取到当前已被压缩的内存页的历史使用数据后,则可以根据这些内存页的历史使用数据,确定这些内存页中满足历史使用条件的内存页,以便对满足历史使用条件的内存页进行再次压缩。

在本申请实施例中,移动终端可以根据当前已被压缩内存页中每个内存页的历史使用数据,确定这些内存页的历史使用时间、历史使用次数、历史使用时长中的一种或者多种是否满足历史使用条件。对此,移动终端中可以设置对于历史使用时间而言的历史使用条件、对于历史使用次数而言的历史使用条件以及历史使用时长而言的历史使用条件。

在一些实施方式中,对于历史使用时间的历史使用条件可以为,相邻两次使用内存页的历史使用时间之间的间隔是否大于第一预设间隔,例如,对于内存页a,相邻两次使用内存页a的历史使用时间的间隔为60小时,预设时间间隔为50小时,则该内存页a的历史使用时间满足历史使用条件;对于历史使用时间的历史使用条件也可以为,最近一次的使用时间距离当前时间的间隔是否大于第二预设间隔,例如,内存页b最近一次使用的历史使用时间距离当前时间的间隔为30小时,第二预设间隔为20小时,则内存页b的历史使用时间满足历史使用条件。当然,具体的历史使用时间对应的历史使用条件可以不作为限定。

在一些实施方式中,对于历史使用次数的历史使用条件可以为,内存页的历史使用次数是否小于预设次数,例如,内存页a的历史使用次数小于3次,则内存页a的历史使用次数满足历史使用条件;对于历史使用次数的历史使用条件也可以为,内存页的历史使用次数最少,例如,当前已被压缩的内存页中,内存页b的历史使用次数最少,则内存页b的历史使用次数满足历史使用条件。

在一些实施方式中,对于历史使用时长的历史使用条件可以为,内存页的历史使用时长是否小于预设时长,例如,内存页a的历史使用时长小于10分钟,则内存页a的历史使用时长满足历史使用条件;对于历史使用时长的历史使用条件也可以为,内存页的历史使用时长最少,例如,当前已被压缩的内存页中,内存页b的历史使用时长最少,则内存页b的历史使用时长满足历史使用条件。

可以理解的,移动终端确定当前已被压缩的内存页中满足历史使用条件的内存页,可以确定历史使用时间、历史使用次数以及历史使用时长中的一种或者多种满足历史使用条件,例如,内存页a的历史使用时间以及历史使用次数同时满足历史使用条件,则表示内存页a满足历史使用条件,在此不做限定。

当然,在本申请实施例中,具体的历史使用条件可以不作为限定,历史使用条件可以用于从当前已被压缩的内存页中,获取较少使用、或者后续较长时间内不会使用的内存页。

移动终端从当前已被压缩的内存页中确定出满足历史使用条件的内存页后,则可以将满足历史使用条件的内存页,作为目标内存页,目标内存页即为后续可以进行再次压缩的内存页。

步骤s140:对所述目标内存页再次进行压缩并存储。

在本申请实施例中,移动终端在从当前已被压缩的内存页中,确定出满足历史使用条件的内存页后,则可以对这些目标内存页再次进行压缩,以减少目标内存页占用的内存。从而可以实现对内存页的多层级(多次)压缩,具体压缩的层级以及每次压缩的大小可以按实际需求设定。

本申请实施例提供的数据存储方法,通过获取内存中当前已被压缩的内存页,获取内存页的历史使用数据,根据历史使用数据,获取内存页中满足历史使用条件的内存页,作为目标内存页,对目标内存页再次进行压缩并存储,从而实现对内存页的深度压缩,可以节省内存空间,提升内存利用率。

请参阅图2,图2示出了本申请另一个实施例提供的数据存储方法的流程示意图。该方法应用于上述移动终端,下面将针对图2所示的流程进行详细的阐述,所述数据存储方法具体可以包括以下步骤:

步骤s210:获取内存中当前已被压缩的内存页。

步骤s220:获取所述内存页的历史使用数据。

在本申请实施例中,步骤s210以及步骤s220可以参阅前述实施例的内容,在此不再赘述。其中,获取的当前已被压缩的内存页的历史使用数据可以至少包括历史使用时间。

步骤s230:根据所述历史使用时间,获取所述内存页每个内存页最近一次被使用的时间。

在本申请实施例中,移动终端可以根据当前已被压缩的内存页的历史使用时间,确定这些内存页的历史使用时间是否满足历史使用条件,以从这些内存页中获得满足历史使用条件的内存页。

在一些实施方式中,移动终端可以根据当前已被压缩的内存页的历史使用时间,获取当前已被压缩的内存页中每个内存页的最近一次被使用的时间。例如,当前已被压缩的内存页中包括内存页c,获取的内存页c的历史使用时间包括2019年9月10日16点45分、2019年9月15日10点30分以及2019年9月18日17点12分,移动终端执行该数据存储方法的当前时间为2019年9月18日19点20分,则内存页c的最近一次被使用的时间为2019年9月18日17点12分。

步骤s240:对所述每个内存页最近一次被使用的时间,按照时间先后顺序进行排序,获得排序结果。

在本申请实施例中,移动终端在获取到当前已被压缩的内存页中每个内存页的最近一次被使用的时间之后,则可以按照时间先后顺序对这些最近一次被使用的时间进行排序,以便后续根据排序结果确定满足历史使用条件的内存页。例如,当前已被压缩的内存页包括内存页a、内存页b以及内存页c,内存页a的最近一次被使用的时间为2019年9月17日9点08分,内存页b的最近一次被使用的时间为2019年9月16日16点24分,内存页c的最近一次被使用的时间为2019年9月18日19点00分,则按照时间先后顺序,对内存页a的一次最近被使用的时间、内存页b的一次最近被使用的时间以及内存页c的一次最近被使用的时间进行排序,排序结果为2019年9月16日16点24分,2019年9月17日9点08分,2019年9月18日19点00分。

步骤s250:获取所述排序结果中首位对应的内存页,作为目标内存页。

在本申请实施例中,移动终端在按照时间先后顺序,对当前已被压缩的内存页中每个内存页对应的最近一次被使用的时间进行排序后,则可以根据排序结果,确定满足历史使用条件的内存页。具体的,移动终端可以从排序结果中,获取排在首位的最近一次被使用的时间,并将该首位对应的内存页,确定为满足历史使用条件的内存页,将该首位对应的内存页作为目标内存页,即后续可以进行再次压缩的内存页。可以理解的,该目标内存页的最近一次使用的时间距离当前时间最久,表征该内存页很久未被使用,后续可能也不会被使用,因此可以将该内存页作为可再次被压缩的目标内存页。

步骤s260:对所述目标内存页再次进行压缩并存储。

在本申请实施例中,移动终端在确定出目标内存页后,还可以确定该目标内存页是否满足可再次被压缩的条件,例如该目标内存页的压缩率是否达到设定阈值,即该目标内存页是否已经被压缩到最小而不能再被压缩。如果确定出目标内存页满足再次被压缩的条件,则可以对目标内存页再次进行压缩,实现对内存页的多层级的压缩。

本申请实施例提供的数据存储方法,通过获取内存中当前已被压缩的内存页,获取内存页的历史使用数据,根据历史使用数据中每个已被压缩的内存页的最近一次被使用的时间,对这些内存页中每个内存页最近一次被使用的时间,按照时间先后顺序进行排序,获得排序结果,将排序结果中首位对应的内存页,作为目标内存页,然后对目标内存页再次进行压缩并存储,从而实现对长时间未使用的内存页的深度压缩,可以节省内存空间,提升内存利用率。

请参阅图3,图3示出了本申请又一个实施例提供的数据存储方法的流程示意图。该方法应用于上述移动终端,下面将针对图3所示的流程进行详细的阐述,所述数据存储方法具体可以包括以下步骤:

步骤s310:获取内存中当前已被压缩的内存页。

步骤s320:获取所述内存页的历史使用数据。

在本申请实施例中,步骤s310以及步骤s320可以参阅前述实施例的内容,在此不再赘述。

步骤s330:根据所述历史使用数据,获取所述内存页中满足历史使用条件的内存页,作为目标内存页。

在本申请实施例中,历史使用条件可以包括:在预设时间段内的历史使用次数小于第一设定次数、在所述预设时间段内的历史使用时长小于设定时长、在所述预设时间段内的历史使用次数最少、或者在所述预设时间段内的历史使用时长最小。

在一些实施方式中,预设时间段可以为当前时间以前预设时长内的时间段,即最近预设时长内的时间段,预设时长可以为24小时,也可以为36小时等,在此不做限定。可以理解的,在预设时间段内,如果当前已被压缩的内存页中存在历史使用次数小于第一设定次数的内存页,表示该内存页在被压缩后,最近一段时间内不常被使用,因此可以将该内存页再进行压缩,而将该内存页作为目标内存页。在预设时间段内,如果当前已被压缩的内存页中存在历史使用时长小于设定时长,表示该内存页在被压缩后,最近一段时间内被使用的时间较短,即该内存页不常被使用,因此可以将该内存页再进行压缩,而将该内存页作为目标内存页。在预设时间段内,目标内存页对应的历史使用次数最少,也可以表示该内存页不常被使用,因此可以对该内存页再进行压缩,而将该内存页作为目标内存页。在预设时间段内,目标内存页对应的历史使用时长最少,也可以表示该内存页不常被使用,因此可以对该内存页再进行压缩,而将该内存页作为目标内存页。其中,具体的第一设定次数以及设定时长可以不作为限定,例如,第一设定次数可以为1,也可以2,设定时长可以为0.1分钟,也可以为2分钟。

在本申请实施例中,历史使用条件也可以为上述历史使用条件的结合,例如,历史使用条件可以为历史时长时长最小且历史使用时长小于设定时长,历史使用条件也可以为历史次数时长最小且历史使用次数小于第一设定次数,具体的历史使用条件可以不做限定。

步骤s340:获取所述目标内存页已被压缩的压缩次数。

在本申请实施例中,移动终端从当前已被压缩的内存页中,确定出满足历史使用条件的目标内存页后,在对目标内存页再次进行压缩之前,还可以获取目标内存页已被压缩的压缩次数,以根据已被压缩的次数,确定目标内存页是否可以再次被压缩。

在一些实施方式中,目标内存页被压缩的次数指目标内存页相对未被压缩的状态下被压缩的次数。例如,对于内存页a,被压缩前的原始大小为150兆(mb),在2019年9月10日10点10分被压缩为50mb,在2019年9月11日12点10分被使用,则该内存页给解压后使用,恢复至150mb大小,在2019年9月13日11点12分又被压缩至50mb,而当前时间之前未对内存页a压缩以及解压,则内存页对应的压缩次数为1;又例如,对于内存页b,被压缩前的原始大小为300mb,在2019年9月12日11点00分被压缩为100mb,在2019年9月14日11点20分再次被压缩,由100mb被压缩至30mb,而当前时间之前未对内存页b压缩以及解压,则内存页对应的压缩次数为2。

在一些实施方式中,移动终端可以根据记录的内存页的压缩记录,获取目标内存页已被压缩的压缩次数。可以理解的,移动终端每次对内存页压缩时,均可以记录到压缩记录中,从而移动终端可以根据压缩记录获取到目标内存页已被压缩的压缩次数。

步骤s350:判断所述压缩次数是否小于第二设定次数。

在本申请实施例中,移动终端在获取到被压缩的压缩次数后,可以判断该目标内存页被压缩的压缩次数是否小于第二设定次数。其中,第二设定次数可以为预先设置的可以对内存页进行压缩的次数,即设置的可进行压缩的层级,具体的压缩次数可以根据实际需求设置,例如,可以设置为3次,也可以设置为4次。如果该压缩次数达到第二设定次数(等于或者大于第二设定次数),则表示当前内存页被压缩的层级已经达到设定的层级,而不能再被压缩;如果该压缩次数未达到第二设定次数(小于第二设定次数),则表示当前内存页被压缩的层级未达到设定的层级,即可以再被压缩。

步骤s360:如果所述压缩次数小于第二设定次数,执行所述对所述目标内存页再次进行压缩并存储。

在本申请实施例中,如果步骤s350判断出压缩次数小于第二设定次数,则可以对目标内存页再次进行压缩并存放在内存中。

在本申请实施例中,如果目标内存页被压缩的次数小于第二设定次数时,对目标内存页再次进行压缩并存储,可以包括:

如果所述压缩次数小于第二设定次数,获取所述压缩次数对应的压缩率;根据所述压缩率,对所述目标内存页再次进行压缩并存储。

可以理解的,当内存页被压缩多次后,内存页被压缩的层级越深(压缩次数越多),其每次可压缩的难度会加大,压缩大小的也会变小,因此,可以设置压缩次数与压缩率的对应关系,即压缩层级与压缩率的对应关系,压缩次数越多,压缩率则越高。压缩率指文件压缩后的大小与压缩前的大小之比。例如,内存页在进行第一层级的压缩时,压缩率可以为0.33,内存页在进行第二层级的压缩时,压缩率可以为0.44,在进行第三层级的压缩时,压缩率可以为0.5,当然,以上压缩率仅为举例,并不代表对本申请实施例中具体的压缩率的限定。

进一步的,移动终端可以根据压缩次数与压缩率的对应关系,获取与目标内存页的压缩次数对应的压缩率,再根据获得的压缩率,对目标内存页再次进行压缩并存储。

在一些实施方式中,该数据存储方法还可以包括:如果当前已被压缩的内存页的压缩次数等于或者大于第二设定次数,可以不执行对目标内存页进行压缩。

在另一些实施方式中,该数据存储方法还可以包括:如果所述压缩次数等于或者大于所述第二设定次数,且所述压缩次数小于第三设定次数,判断所述内存的剩余内存是否小于内存阈值,所述第三设定次数大于所述第二设定次数;如果所述剩余内存小于所述内存阈值,对所述目标内存页再次进行压缩并存储。

可以理解的,如果目标内存页的被压缩的压缩次数等于或者大于第二设定次数,则表示目标内存页被压缩的压缩次数达到了设置的次数,该情况下,目标内存页仍可以被压缩一定的大小,但压缩的难度相对较大,因此通常情况下不会再进行压缩,而在移动终端的系统剩余内存较低的情况下,则可以对该目标内存页进行压缩,以减少内存的占用,增加系统的剩余内存。

因此,如果移动终端判断出目标内存页的压缩次数等于或者大于第二设定次数,则可以获取移动终端当前的剩余内存,以确定剩余内存是否小于内存阈值。其中,移动终端可以通过检测内存的使用情况的方式获得移动终端的剩余内存,例如,当移动终端的操作系统为android系统时,通过activitymanager.getmemoryinfo(activitymanager.memoryinfo)方法可以获取移动终端的内存当前的可用内存量,即获取移动终端的剩余内存。

移动终端在获取到剩余内存后,则可以判断剩余内存是否小于内存阈值,其中,内存阈值的大小可以不作为限定,例如,可以设置为对目标内存页进行压缩次数达到第二设定次数时的压缩,不会对移动终端的运行造成影响的大小。如果移动终端的剩余内存小于内存阈值,则表示移动终端当前的剩余内存较少,因此可以再对目标内存页进行压缩,而减少内存的占用,增加移动终端的可用内存。如果移动终端的剩余内存等于或者大于内存阈值,则表示移动终端的剩余内存较多,因此,可以不再对目标内存页进行压缩,以避免压缩次数达到第二设定次数时,压缩难度较大,增加系统负担。

在本申请实施例中,该数据存储方法还可以包括:在预设时长后,再次执行所述获取内存中当前已被压缩的内存页的步骤,至所述对所述目标内存页再次进行压缩并存储的步骤,直至所述目标内存页的压缩率小于设定压缩率。可以理解的,移动终端可以每间隔预设时长,执行一次本申请实施例提供的数据存储方法,从而可以实现对内存页的多层级压缩,达到对内存页的深度压缩的效果,提升内存利用率。

本申请实施例提供的数据存储方法,通过获取内存中当前已被压缩的内存页,获取当前已被压缩的内存页中每个内存页的历史使用数据,根据历史使用数据,获取当前已被压缩的内存页中满足历史使用条件的内存页作为目标内存页,再获取目标内存页已被压缩的压缩次数,然后判断压缩次数是否小于第二设定次数,如果目标内存页的压缩次数小于第二设定次数,执行对目标内存页再次进行压缩并存储,从而实现对满足历史使用条件的已被压缩的内存页的深度压缩,可以节省内存空间,提升内存利用率。

请参阅图4,图4示出了本申请再一个实施例提供的数据存储方法的流程示意图。该方法应用于上述移动终端,下面将针对图4所示的流程进行详细的阐述,所述数据存储方法具体可以包括以下步骤:

步骤s410:获取内存中当前已被压缩的内存页。

步骤s420:获取所述内存页的历史使用数据。

步骤s430:根据所述历史使用数据,获取所述内存页中满足历史使用条件的内存页,作为目标内存页。

在本申请实施例中,步骤s410至步骤s430可以参阅前述实施例的内存,在此不再赘述。

步骤s440:根据所述历史使用数据,确定与所述历史使用数据对应的压缩率。

在本申请实施例中,移动终端在从当前已被压缩的内存页中,确定出满足历史使用条件的目标内存页后,在对目标内存页进行再次压缩时,可以根据历史使用数据,确定与历史使用数据对应的压缩率,以使本次的压缩率与目标内存页的历史使用数据对应。

在一些实施方式中,移动终端可以根据历史使用数据中的历史使用时间、历史使用次数、历史使用时长等,确定历史使用数据对应的压缩率。作为一种方式,目标内存页的历史使用次数越多,则表示目标内存页被使用的可能性越高,因此历史使用次数越多,则本次的压缩率越高,以避免该目标内存页被再次使用时的解压难度较大,增加移动终端的系统负担。作为另一种方式,目标内存页的相邻两次被使用时的历史使用时间的间隔越短,则表示目标内存页被使用的可能性越高,因此该间隔越短,则本次的压缩率越高,以避免该目标内存页被再次使用时的解压难度较大,增加移动终端的系统负担。作为又一种方式,目标内存页的历史使用时长越长,则表示目标内存页被使用的可能性越高,因此历史使用时长越长,则本次的压缩率越高,以避免该目标内存页被再次使用时的解压难度较大,增加移动终端的系统负担。当然,具体根据历史使用数据确定压缩率的方式可以不作为限定,例如,也可以同时根据历史使用时间、历史使用次数以及历史使用时长,共同确定本次对目标内存页的压缩率,可以更为全面的评估目标内存页被使用的可能性。

步骤s450:根据所述压缩率,对所述目标内存页再次进行压缩并存储。

本申请实施例提供的数据存储方法,通过获取内存中当前已被压缩的内存页,获取当前已被压缩的内存页中每个内存页的历史使用数据,根据历史使用数据,获取当前已被压缩的内存页中满足历史使用条件的内存页作为目标内存页,然后根据历史使用数据,确定与历史使用数据对应的压缩率,最后根据压缩率对目标内存页进行压缩,使得本次对目标内存页压缩的压缩率与该目标内存页的历史使用数据对应,从而实现对满足历史使用条件的已被压缩的内存页的深度压缩,可以节省内存空间,提升内存利用率,也避免了该目标内存页被再次使用时的解压难度较大,增加移动终端的系统负担。

请参阅图5,其示出了本申请实施例提供的一种数据存储装置400的结构框图。该数据存储装置400应用上述的移动终端,该数据存储装置400包括:第一内存页获取模块410、使用数据获取模块420、第二内存页获取模块430以及内存页压缩模块440。其中,所述第一内存页获取模块410用于获取内存中当前已被压缩的内存页;所述使用数据获取模块420用于获取所述内存页的历史使用数据;所述第二内存页获取模块430用于根据所述历史使用数据,获取所述内存页中满足历史使用条件的内存页,作为目标内存页;所述内存页压缩模块440用于对所述目标内存页再次进行压缩并存储。

在一些实施方式中,所述历史使用数据可以包括历史使用时间。请参见图6,第二内存页获取模块430可以包括时间获取单元431、时间排序单元432以及内存页确定单元433。时间获取单元431用于根据所述历史使用时间,获取所述内存页每个内存页最近一次被使用的时间;时间排序单元432用于对所述每个内存页最近一次被使用的时间,按照时间先后顺序进行排序,获得排序结果;内存页确定单元433用于获取所述排序结果中首位对应的内存页,作为目标内存页。

在另一些实施方式中,所述历史使用条件可以包括:在预设时间段内的历史使用次数小于第一设定次数、在所述预设时间段内的历史使用时长小于设定时长、在所述预设时间段内的历史使用次数最少、或者在所述预设时间段内的历史使用时长最小。

在本申请实施例中,请参见图7,该数据存储装置400还可以包括:压缩次数获取模块450以及压缩次数判断模块460。压缩次数获取模块450用于内存页压缩模块440对所述目标内存页再次进行压缩并存储之前,获取所述目标内存页已被压缩的压缩次数;压缩次数判断模块460用于判断所述压缩次数是否小于第二设定次数;如果所述压缩次数小于第二设定次数,内存页压缩模块440对所述目标内存页再次进行压缩并存储。

进一步的,内存页压缩模块440可以具体用于:如果所述压缩次数小于第二设定次数,获取所述压缩次数对应的压缩率;根据所述压缩率,对所述目标内存页再次进行压缩并存储。

在一些实施方式中,该数据存储装置400还可以包括内存判断模块。内存判断模块用于如果所述压缩次数等于或者大于所述第二设定次数,且所述压缩次数小于第三设定次数,判断所述内存的剩余内存是否小于内存阈值,所述第三设定次数大于所述第二设定次数;内存页压缩模块440还可以用于如果所述剩余内存小于所述内存阈值,对所述目标内存页再次进行压缩并存储。

在一些实施方式中,请参见图8,内存页压缩模块440可以包括:压缩率获取单元441以及压缩执行单元442。压缩率获取单元441用于根据所述历史使用数据,确定与所述历史使用数据对应的压缩率;压缩执行单元442用于根据所述压缩率,对所述目标内存页再次进行压缩并存储。

在本申请实施例中,该数据存储装置400还可以包括再执行模块。再执行模块用于在预设时长后,再次执行所述获取内存中当前已被压缩的内存页的步骤,至所述对所述目标内存页再次进行压缩并存储的步骤,直至所述目标内存页的压缩率小于设定压缩率。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,模块相互之间的耦合可以是电性,机械或其它形式的耦合。

另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

综上所述,本申请提供的方案,通过获取内存中当前已被压缩的内存页,获取内存页的历史使用数据,根据历史使用数据,获取内存页中满足历史使用条件的内存页,作为目标内存页,对目标内存页再次进行压缩并存储,从而实现对内存页的深度压缩,可以节省内存空间,提升内存利用率。

请参考图9,其示出了本申请实施例提供的一种移动终端的结构框图。该移动终端100可以是智能手机、平板电脑、电子书、智能穿戴设备等能够运行应用程序的电子设备。本申请中的移动终端100可以包括一个或多个如下部件:处理器110、存储器120、以及一个或多个应用程序,其中一个或多个应用程序可以被存储在存储器120中并被配置为由一个或多个处理器110执行,一个或多个程序配置用于执行如前述方法实施例所描述的方法。

处理器110可以包括一个或者多个处理核。处理器110利用各种接口和线路连接整个移动终端100内的各个部分,通过运行或执行存储在存储器120内的指令、程序、代码集或指令集,以及调用存储在存储器120内的数据,执行移动终端100的各种功能和处理数据。可选地,处理器110可以采用数字信号处理(digitalsignalprocessing,dsp)、现场可编程门阵列(field-programmablegatearray,fpga)、可编程逻辑阵列(programmablelogicarray,pla)中的至少一种硬件形式来实现。处理器110可集成中央处理器(centralprocessingunit,cpu)、图像处理器(graphicsprocessingunit,gpu)和调制解调器等中的一种或几种的组合。其中,cpu主要处理操作系统、用户界面和应用程序等;gpu用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器110中,单独通过一块通信芯片进行实现。

存储器120可以包括随机存储器(randomaccessmemory,ram),也可以包括只读存储器(read-onlymemory)。存储器120可用于存储指令、程序、代码、代码集或指令集。存储器120可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等。存储数据区还可以存储终端100在使用中所创建的数据(比如电话本、音视频数据、聊天记录数据)等。

请参考图10,其示出了本申请实施例提供的一种计算机可读存储介质的结构框图。该计算机可读介质800中存储有程序代码,所述程序代码可被处理器调用执行上述方法实施例中所描述的方法。

计算机可读存储介质800可以是诸如闪存、eeprom(电可擦除可编程只读存储器)、eprom、硬盘或者rom之类的电子存储器。可选地,计算机可读存储介质800包括非易失性计算机可读介质(non-transitorycomputer-readablestoragemedium)。计算机可读存储介质800具有执行上述方法中的任何方法步骤的程序代码810的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码810可以例如以适当形式进行压缩。

最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1