掌桥专利:专业的专利平台
掌桥专利
首页

内存回收方法、装置、电子设备以及存储介质

文献发布时间:2023-06-19 11:54:11


内存回收方法、装置、电子设备以及存储介质

技术领域

本申请涉及电子设备技术领域,更具体地,涉及一种内存回收方法、装置、电子设备以及存储介质。

背景技术

随着科学技术的发展,电子设备的使用越来越广泛,功能越来越多,已经成为人们日常生活中的必备之一。近年来,应用程序(application,APP)对电子设备的内存的需求量日益增多,而电子设备的内存容量有限,无法容纳大量应用程序常驻内存。

发明内容

鉴于上述问题,本申请提出了一种内存回收方法、装置、电子设备以及存储介质,以解决上述问题。

第一方面,本申请实施例提供了一种内存回收方法,应用于电子设备,所述方法包括:获取滑动窗口的窗口数据,其中,所述窗口数据包括所述电子设备在第一时间段的内存分配参数;基于所述窗口数据,确定所述电子设备在第二时间段的内存回收参数,其中,所述第一时间段早于所述第二时间段;基于所述内存回收参数,对所述电子设备进行内存回收。

第二方面,本申请实施例提供了一种内存回收装置,应用于电子设备,所述装置包括:窗口数据获取模块,用于获取滑动窗口的窗口数据,其中,所述窗口数据包括所述电子设备在第一时间段的内存分配参数;内存回收参数确定模块,用于基于所述窗口数据,确定所述电子设备在第二时间段的内存回收参数,其中,所述第一时间段早于所述第二时间段;内存回收模块,用于基于所述内存回收参数,对所述电子设备进行内存回收。

第三方面,本申请实施例提供了一种电子设备,包括存储器和处理器,所述存储器耦接到所述处理器,所述存储器存储指令,当所述指令由所述处理器执行时所述处理器执行上述方法。

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

本申请实施例提供的内存回收方法、装置、电子设备以及存储介质,获取滑动窗口的窗口数据,其中,窗口数据包括电子设备在第一时间段的内存分配参数,基于窗口数据,确定电子设备在第二时间段的内存回收参数,其中,第一时间段早于第二时间段,基于内存回收参数,对电子设备进行内存回收,从而通过包括内存分配参数的历史数据来动态生成滑动窗口的机制,预测内存回收参数并进行内存回收,从而提升了内存的读写效率。

附图说明

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

图1示出了本申请实施例用于执行根据本申请实施例的内存回收方法的电子设备的框图;

图2示出了本申请实施例提供的电子设备的操作系统的框图;

图3示出了本申请一个实施例提供的内存回收方法的流程示意图;

图4示出了本申请又一个实施例提供的内存回收方法的流程示意图;

图5示出了本申请再一个实施例提供的内存回收方法的流程示意图;

图6示出了本申请另一个实施例提供的内存回收方法的流程示意图;

图7示出了本申请又一个实施例提供的内存回收方法的流程示意图;

图8示出了可用于本申请实施例提供的内存回收方法的框架图;

图9示出了本申请实施例提供的内存回收装置的模块框图;

图10示出了本申请实施例的用于保存或者携带实现根据本申请实施例的内存回收方法的程序代码的存储单元。

具体实施方式

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

近年来,应用程序(application,APP)对电子设备的内存的需求量日益增多,而电子设备的内存容量有限,无法容纳大量应用程序常驻内存。因此,当电子设备的内存不足时,便将进行内存回收。

其中,电子设备安装有Android系统,Android系统是基于Linux kernel的移动平台操作系统。当电子设备的内存压力过大时,就会对Android系统的每个压力过大的分区进行内存回收,内存回收主要是针对匿名页和文件页进行的。对于匿名页,内存回收过程中会筛选出一些不经常使用的匿名页,将它们写入到swap分区中,然后作为空闲页框释放到伙伴系统。而对于文件页,内存回收过程中也会筛选出一些不经常使用的文件页,如果此文件页中保存的内容与磁盘中文件对应内容一致,说明此文件页是一个干净的文件页,就不需要进行回写,直接将此页作为空闲页框释放到伙伴系统中,相反,如果文件页保存的数据与磁盘中文件对应的数据不一致,则认定此文件页为脏页,需要先将此文件页回写到磁盘中对应数据所在位置上,然后再将此页作为空闲页框释放到伙伴系统中。这样当内存回收完成后,系统空闲的页框数量就会增加,能够缓解内存压力,弊端是在回收过程中会对系统的输入/输出造成很大的压力,所以,在Android系统内,一般每个分区会设置一条内存回收水线,当空闲页框数量不满足这条内存回收水线时,就会执行内存回收操作,而系统空闲页框数量满足这条内存回收水线时,Android系统是不会进行内存回收操作的。

Linux使用物理内存的原则是尽量使用,例如,Android系统中存在的文件缓存(Page Cache)就是为了加快读写速度而缓存在内存中。Android系统需要时刻预留一定额度的空闲内存,以满足新的内存申请操作。Linux设计了kswapd后台程序,在到达一定条件时,kswapd后台程序将内存中不活跃的数据交换到Swap分区中。如果申请大于空闲内存的空间,Linux系统会触发直接内存回收(direct reclaim)。回收的内存对象有文件缓存(Page cache)和匿名内存的进程的堆、栈数据等。针对文件缓存,若有脏数据时,将脏数据写入磁盘,然后释放相关内存。针对匿名内存,直接将其数据交换到Swap分区,并释放内存。

发明人经过研究发现,目前的内存回收会在不必要的情况下触发直接内存回收方式Direct reclaim模式。在Direct reclaim模式下,内存分配和内存回收是同步的关系,内存分配的过程会被内存回收的操作所阻塞,增加等待的时间。Direct reclaim会严重影响性能,因为所有的内存分配会被阻塞而等待Direct reclaim的完成,而且很多脏页dirtypages需要写回外存,这也大大的延迟了内存分配的任务。虽然为了避免Direct reclaim,Linux kernel实现了一种轻量级的后台回收机制Kswapd,且,Kswapd会被间歇性的唤醒来回收内存,但是,Kswapd花费太多时间来回收内存,导致Direct reclaim还是会被不可避免的触发。系统虽然设置了内存空闲水线watermarks来保障有一定的未使用的内存空间,以避免突然的大内存需求而触发Direct reclaim。但是,发明人经研究发现,一个常用Android系统在1分钟之内触发了将近10次的Direct reclaim,目前,大内存块的粗粒度回收机制是适用于台式机或者服务器系统,不太适用于移动平台细粒度内存需求,并且,大内存块的内存回收通常会引起较长的时延,而影响用户体验。

针对上述问题,发明人经过长期的研究发现,并提出了本申请实施例提供的内存回收方法、装置、电子设备以及存储介质,通过包括内存分配参数的历史数据来动态生成滑动窗口的机制,预测内存回收参数并进行内存回收,从而提升了内存的读写效率。其中,具体的内存回收方法在后续的实施例中进行详细的说明。

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

其中,处理器110可以包括一个或者多个处理核。处理器110利用各种接口和线路连接整个电子设备100内的各个部分,通过运行或执行存储在存储器120内的指令、程序、代码集或指令集,以及调用存储在存储器120内的数据,执行电子设备100的各种功能和处理数据。可选地,处理器110可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(ProgrammableLogic Array,PLA)中的至少一种硬件形式来实现。处理器110可集成中央处理器(CentralProcessing Unit,CPU)、图形处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责待显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器110中,单独通过一块通信芯片进行实现。

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

触摸显示屏130用于显示由用户输入的信息、提供给用户的信息以及所述电子设备100的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、数字、视频和其任意组合来构成,在一个实例中,该触摸显示屏130可以为液晶显示器(Liquid CrystalDisplay,LCD),也可以为有机发光二极管(Organic Light-Emitting Diode,OLED),在此不做限定。

以电子设备100的操作系统为安卓(Android)系统为例,存储器120中存储的程序和数据如图2所示,存储器120中存储有Linux内核层220、系统运行库层240、应用框架层260和应用层280。Linux内核层220为电子设备100的各种硬件提供了底层的驱动,如显示驱动、音频驱动、摄像头驱动、蓝牙驱动、Wi-Fi驱动、电源管理等。系统运行库层240通过一些C/C++库来为Android系统提供了主要的特性支持。如SQLite库提供了数据库的支持,OpenGL/ES库提供了3D绘图的支持,Webkit库提供了浏览器内核的支持等。在系统运行库层240中还提供有安卓运行时库(Android Runtime),它主要提供了一些核心库,能够允许开发者使用Java语言来编写Android应用。应用框架层260提供了构建应用程序时可能用到的各种API,开发者也可以通过使用这些API来构建自己的应用程序,比如活动管理、窗口管理、视图管理、通知管理、内容提供者、包管理、通话管理、资源管理、定位管理。应用层280中运行有至少一个应用程序,这些应用程序可以是操作系统自带的联系人程序、短信程序、时钟程序、相机应用等;也可以是第三方开发者所开发的应用程序,比如即时通信程序、相片美化程序等。

请参阅图3,图3示出了本申请一个实施例提供的内存回收方法的流程示意图。所述内存回收方法用于通过包括内存分配参数的历史数据来动态生成滑动窗口的机制,预测内存回收参数并进行内存回收,从而提升了内存的读写效率。在具体的实施例中,所述内存回收方法应用于如图9所示的内存回收装置300以及配置有内存回收装置300的电子设备100(图1)。下面将以电子设备为例,说明本实施例的具体流程,当然,可以理解的,本实施例所应用的电子设备可以包括智能手机、平板电脑、穿戴式电子设备等,在此不做限定。下面将针对图3所示的流程进行详细的阐述,所述内存回收方法具体可以包括以下步骤:

步骤S110:获取滑动窗口的窗口数据,其中,所述窗口数据包括所述电子设备在第一时间段的内存分配参数。

在本实施例中,电子设备可以设置有滑动窗口,该滑动窗口用于作为内存的分配和回收的依据。在一些实施方式中,电子设备所设置的滑动窗口可是基于电子设备在过去一段时间内的内存分配参数生成,则电子设备可以通过滑动窗口所包括的窗口数据预测电子设备未来一段时间内所需要的内存,并根据所需要的内存进行内存回收,从而实现内存空间的释放。

在本实施例中,可以获取滑动窗口的窗口数据,其中,窗口数据包括电子设备在第一时间段的内存分配参数,其中,内存分配参数可以为内存分配大小、可以为内存分配数量、也可以为内存分配大小和内存分配数量。例如,可以获取滑动窗口的窗口尺寸,并通过窗口尺寸确定电子设备在第一时间段的内存分配参数。作为一种方式,可以通过滑动窗口的窗口数据,获取滑动窗口记录的电子设备在第一时间段分配的页的大小,并基于电子设备在第一时间段分配的页的大小获取电子设备在第一时间段的内存分配参数。

步骤S120:基于所述窗口数据,确定所述电子设备在第二时间段的内存回收参数,其中,所述第一时间段早于所述第二时间段。

在本实施例中,在获取滑动窗口的窗口数据后,可以基于窗口数据,确定电子设备在第二时间段的内存回收参数,从而实现根据电子设备在过去时间段的内存分配参数,预测确定电子设备在未来时间段的内存回收参数。其中,内存回收参数可以为内存回收大小、可以为内存回收数量、也可以为内存回收大小和内存回收数量。

在一些实施方式中,电子设备可以预先设置并存储有预设参数,该预设参数用于作为内存回收参数和内存分配参数之间的差值的判断依据,因此,在基于电子设备在第一时间段的内存分配参数,确定电子设备在第二时间段的内存回收参数时,可以基于电子设备在第一时间段的内存分配参数和预设参数,确定电子设备在第二时间段的内存回收参数,以使得所确定的内存回收参数和内存分配参数之间的差值小于预设参数。

作为一种方式,该内存回收参数可以等于内存分配参数,该内存回收参数也可以略大于内存分配参数。例如,当内存回收参数为内存回收大小且内存分配参数为内存分配大小时,则内存回收大小可以等于内存分配大小,该内存回收大小也可以略大于内存分配大小;当内存回收参数为内存回收数量且内存分配参数为内存分配数量时,则内存回收数量可以等于内存分配数量,该内存回收数量也可以略大于内存分配数量;当内存回收参数为内存回收大小和内存回收数量且内存分配参数为内存分配大小和内存回收数量时,则内存回收大小和内存回收数量可以等于内存分配大小和内存分配数量,该内存回收大小和内存回收数量也可以略大于内存分配大小和内存分配数量。

在一些实施方式中,第一时间段可以为当前时间段的上n时间段,第二时间段可以为当前时间段的下一时间段,即,可以基于电子设备在当前时间段的上n时间段的内存分配参数,预测确定电子设备在当前时间段的下一时间段的内存回收参数,其中,n为自然数。作为一种方式,当n为0时,则第一时间段可以为当前时间段,第二时间段可以为当前时间段的下一时间段,即,可以基于电子设备在当前时间段的内存分配参数,预测确定电子设备在当前时间段的下一时间段的内存回收参数。作为又一种方式,当n为1时,则第一时间段可以为当前时间段的上一时间段,第二时间段可以为当前时间段的下一时间段,即,可以基于电子设备在当前时间段的上一时间段的内存分配参数,预测确定电子设备在当前时间段的下一时间段的内存回收参数。

在一些实施方式中,可以获取电子设备当前运行的应用程序,并基于电子设备当前运行的应用程序,确定n的值,其中,当电子设备当前运行的应用程序对内存的需求越大时,则n越小,当电子设备当前运行的应用程序对内存的需求越小时,则n越大。例如,当电子设备当前运行的应用程序为即时通讯类应用程序(存在文件的传输缓存)时,则确定n的值越小,例如,确定n为0,当电子设备当前运行的应用程序为小说类应用程序时,则确定n的值越大,例如,确定n为1或2。

在一些实施方式中,可以获取当前时间,并基于当前时间,确定n的值,其中,当当前时间表征电子设备被使用几率越高时,则n越小,当当前时间表征电子设备被使用的几率越低时,则n越大。例如,当当前时间为白天对应的时间段时,则确定n的值越小,例如,确定n为0,当当前时间为夜晚对应的时间段时,则确定n的值越大,例如,确定n为1或2。

在一些实施方式中,时间段的长短划分可以由电子设备自动设定,也可以由用户手动设定,例如,时间段的长短可以由电子设备自动设定为20ms,时间段的长短也可以由用户手动设定为25ms等,在此不做限定。

在一些实施方式中,时间段的长短可以等分,也可以不等分,例如,时间段的长短可以等分为20ms,此时,第一时间段可以为20ms,第二时间段可以为20ms,时间段段的长短也可以分为20ms、25ms、28ms等多个不同长短,此时,第一时间段可以为20ms,第二时间段可以为25ms,在此不做限定。

在一些实施方式中,时间段的长短可以设置为固定值,例如,时间段的长短可以在初次设置完成后始终保持不变,时间段的长短也可以设置为可变化值,例如,时间段的长短可以根据时间的不同设置为不同的值,可以根据运行的应用程序的不同设置为不同的值等,在此不做限定。

步骤S130:基于所述内存回收参数,对所述电子设备进行内存回收。

在本实施例中,在确定电子设备在第二时间段的内存回收参数后,可以基于内存回收参数,对电子设备进行内存回收,从而使得内存回收符合电子设备的内存需求,防止频繁触发Direct reclaim模式。例如,当内存回收参数为内存回收大小时,则可以基于内存回收大小对电子设备进行内存回收,当内存回收参数为内存回收数量时,则可以基于内存回收数量对电子设备进行内存回收,当内存回收参数为内存回收大小和内存回收数量时,则可以基于内存回收大小和内存回收数量对电子设备进行内存回收。

作为一种方式,电子设备可以应用轻量级预测机制(Light Weight PredictionScheme,LWP),其中,轻量级预测机制是把电子设备在过去一段时间内的内存分配参数,根据时间轴生成一个滑动窗口,通过滑动窗口的窗口数据来作为预测内存回收参数的机制。其中,为了避免给电子设备的系统造成负担,占用中央处理器和存储资源,轻量级预测机制可以设计成异步模式,并且只是存储少量信息。首先,轻量级预测机制根据时间顺序存储值,而避免了存储时间轴信息,来节省存储空间,其次,滑动窗口设置为包括多个信息存储单元,且多个信息存储单元中的每个信息存储单元是存储电子设备在一个时间段的采样信息(内存分配参数),比如20ms的时间段内,选择一个请求分配内存参数放入滑动窗口中。基于以上信息,轻量级预测机制可以预测下一次内存需求参数,并且以比较低的存储和延迟的代价进行对应的内存回收。

本申请一个实施例提供的内存回收方法,获取滑动窗口的窗口数据,其中,窗口数据包括电子设备在第一时间段的内存分配参数,基于窗口数据,确定电子设备在第二时间段的内存回收参数,其中,第一时间段早于第二时间段,基于内存回收参数,对电子设备进行内存回收,从而通过包括内存分配参数的历史数据来动态生成滑动窗口的机制,预测内存回收参数并进行内存回收,从而提升了内存的读写效率。

请参阅图4,图4示出了本申请又一个实施例提供的内存回收方法的流程示意图。该方法应用于上述电子设备,下面将针对图4所示的流程进行详细的阐述,所述内存回收方法具体可以包括以下步骤:

步骤S210:获取滑动窗口的窗口数据,其中,所述窗口数据包括所述电子设备在第一时间段的内存分配参数。

其中,步骤S210的具体描述请参阅步骤S110,在此不再赘述。

步骤S220:基于所述窗口数据,确定所述电子设备在所述第二时间段的内存需求参数。

在本实施例中,在获取滑动窗口的窗口数据后,可以基于窗口数据,确定电子设备在第二时间段的内存需求参数,从而实现根据电子设备在过去时间段的内存分配参数,预测确定电子设备在未来时间段的内存需求参数。其中,内存需求参数可以为内存需求大小、可以为内存需求数量、也可以为内存需求大小和内存需求数量。

在一些实施方式中,电子设备可以预先设置并存储有第一预设参数,该第一预设参数用于作为内存需求参数和内存分配参数之间的差值的判断依据,因此,在基于电子设备在第一时间段的内存分配参数,确定电子设备在第二时间段的内存需求参数时,可以基于电子设备在第一时间段的内存分配参数和第一预设参数,确定电子设备在第二时间段的内存需求参数,以使得所确定的内存需求参数和内存分配参数之间的差值小于预设参数。

作为一种方式,该内存需求参数可以等于内存分配参数,该内存需求参数也可以略大于内存分配参数。例如,当内存需求参数为内存需求大小且内存分配参数为内存分配大小时,则内存需求大小可以等于内存分配大小,该内存需求大小也可以略大于内存分配大小;当内存需求参数为内存需求数量且内存分配参数为内存分配数量时,则内存需求数量可以等于内存分配数量,该内存需求数量也可以略大于内存分配数量;当内存需求参数为内存需求大小和内存需求数量且内存分配参数为内存分配大小和内存需求数量时,则内存需求大小和内存需求数量可以等于内存分配大小和内存分配数量,该内存需求大小和内存需求数量也可以略大于内存分配大小和内存分配数量。

步骤S230:基于所述内存需求参数,确定所述电子设备在所述第二时间段的内存回收参数。

在本实施例中,在确定内存需求参数后,可以基于需求回收参数,确定电子设备在第二时间段的内存回收参数,从而实现根据电子设备在未来时间段的内存需求参数,确定电子设备在未来时间段的内存回收参数。其中,内存回收参数可以为内存回收大小、可以为内存回收数量、也可以为内存回收大小和内存回收数量。

在一些实施方式中,电子设备可以预先设置并存储有第二预设参数,该第二预设参数用于作为内存回收参数和内存需求参数之间的差值的判断依据,因此,在基于电子设备在第二时间段的内存需求参数,确定电子设备在第二时间段的内存回收参数时,可以基于电子设备在电子设备在第二时间段的内存需求参数和第二预设参数,确定电子设备在第二时间段的内存回收参数,以使得所确定的内存回收参数和内存需求参数之间的差值小于预设参数。

作为一种方式,该内存回收参数可以等于内存需求参数,该内存回收参数也可以略大于内存需求参数。例如,当内存回收参数为内存回收大小且内存需求参数为内存需求大小时,则内存回收大小可以等于内存需求大小,该内存回收大小也可以略大于内存需求大小;当内存回收参数为内存回收数量且内存需求参数为内存需求数量时,则内存回收数量可以等于内存需求数量,该内存回收数量也可以略大于内存需求数量;当内存回收参数为内存回收大小和内存回收数量且内存需求参数为内存需求大小和内存回收数量时,则内存回收大小和内存回收数量可以等于内存需求大小和内存需求数量,该内存回收大小和内存回收数量也可以略大于内存需求大小和内存需求数量。

步骤S240:基于所述内存回收参数,对所述电子设备进行内存回收。

其中,步骤S240的具体描述请参阅步骤S130,在此不再赘述。

本申请又一个实施例提供的内存回收方法,获取滑动窗口的窗口数据,其中,窗口数据包括电子设备在第一时间段的内存分配参数,基于窗口数据,确定电子设备在第二时间段的内存需求参数,基于内存需求参数,确定电子设备在第二时间段的内存回收参数,基于内存回收参数,对电子设备进行内存回收。相较于图3所示的内存回收方法,本实施例还基于窗口数据确定电子设备的内存需求参数,并基于内存需求参数确定电子设备的内存回收参数,从而提升电子设备的内存回收的合理性。

请参阅图5,图5示出了本申请再一个实施例提供的内存回收方法的流程示意图。该方法应用于上述电子设备,下面将针对图5所示的流程进行详细的阐述,所述内存回收方法具体可以包括以下步骤:

步骤S310:获取滑动窗口的窗口数据,其中,所述窗口数据包括所述电子设备在第一时间段的内存分配参数。

步骤S320:基于所述窗口数据,确定所述电子设备在第二时间段的内存回收参数,其中,所述第一时间段早于所述第二时间段。

步骤S330:基于所述内存回收参数,对所述电子设备进行内存回收。

其中,步骤S310-步骤S330的具体描述请参阅步骤S110-步骤S130,在此不再赘述。

步骤S340:基于所述内存回收参数,对所述电子设备的内存回收水线进行调节。

在本实施例中,在确定电子设备在第二时间段的内存回收参数后,可以基于内存回收参数,对电子设备的内存回收水线进行调节。作为一种方式,在确定电子设备在第二时间段的内存回收参数后,可以基于内存回收参数,将电子设备的内存回收水线调节至当前内存回收水线,其中,当前内存回收水线对应的参数等于或大于内存回收参数,以形成电子设备的内存性能平衡,防止频繁触发Direct reclaim模式造成的损耗和延迟。

作为一种方式,电子设备可以应用轻量级预测机制,根据轻量级预测机制预测确定的内存回收参数,轻量级预测机制动态调节电子设备的后台回收的内存参数。其中,Linux系统设置了内存回收水线watermark来控制内存的回收量,从而可以通过调节内存回收水线来调整电子设备后台内存的回收,为达到最佳的性能和内存回收消耗之间的平衡,轻量级预测机制动态调节电子设备后台默认回收机制回收在一定时间内刚好够用的内存,基于此,轻量级预测机制输出预测需要回收的内存(内存回收参数),让后台回收机制回收对应的内存,并且调整合适的内存回收水线,以避免频繁触发Direct reclaim模式造成的损耗和延迟。

本申请再一个实施例提供的内存回收方法,获取滑动窗口的窗口数据,其中,窗口数据包括电子设备在第一时间段的内存分配参数,基于窗口数据,确定电子设备在第二时间段的内存回收参数,其中,第一时间段早于第二时间段,基于内存回收参数,对电子设备进行内存回收,基于内存回收参数,对电子设备的内存回收水线进行调节。相较于图3所示的内存回收方法,本实施例还基于内存回收参数,对电子设备的内存回收水线进行调节,以形成内存性能平衡,防止内存回收的性能损耗和延迟。

请参阅图6,图6示出了本申请另一个实施例提供的内存回收方法的流程示意图。该方法应用于上述电子设备,在本实施例中,该内存回收参数包括内存回收大小和内存回收数量,下面将针对图6所示的流程进行详细的阐述,所述内存回收方法具体可以包括以下步骤:

步骤S410:获取滑动窗口的窗口数据,其中,所述窗口数据包括所述电子设备在第一时间段的内存分配参数。

其中,步骤S410的具体描述请参阅步骤S110,在此不再赘述。

步骤S420:基于所述窗口数据,确定所述电子设备在第二时间段的内存回收大小和内存回收数量,其中,所述第一时间段早于所述第二时间段。

在本实施例中,内存回收参数包括内存回收大小和内存回收数量。基于此,在获取滑动窗口的窗口数据后,可以基于窗口数据,确定电子设备在第二时间段的内存回收大小和内存回收数量,从而实现根据电子设备在过去时间段的内存分配参数,预测确定电子设备在未来时间段的内存回收大小和内存回收数量。

在一些实施方式中,电子设备可以预先设置并存储有预设参数,该预设参数用于作为内存回收大小和内存回收数量和内存分配参数之间的差值的判断依据,因此,在基于电子设备在第一时间段的内存分配参数,确定电子设备在第二时间段的内存回收大小和内存回收数量时,可以基于电子设备在第一时间段的内存分配参数和预设参数,确定电子设备在第二时间段的内存回收大小和内存回收数量,以使得所确定的内存回收大小和内存回收数量与内存分配参数之间的差值小于预设参数。

作为一种方式,该内存回收大小和内存回收数量可以等于内存分配参数,该内存回收大小和内存回收数量也可以略大于内存分配参数。例如,则内存回收大小和内存回收数量可以等于内存分配大小和内存分配数量,该内存回收大小和内存回收数量也可以略大于内存分配大小和内存分配数量。

步骤S430:基于所述内存回收大小和所述内存回收数量,对所述电子设备进行内存回收。

在本实施例中,在确定电子设备在第二时间段的内存回收大小和内存回收数量后,可以基于内存回收大小和内存回收数量,对电子设备进行内存回收,从而使得内存回收符合电子设备的内存需求,防止频繁触发Direct reclaim模式。

本申请另一个实施例提供的内存回收方法,获取滑动窗口的窗口数据,其中,窗口数据包括电子设备在第一时间段的内存分配参数,基于窗口数据,确定电子设备在第二时间段的内存回收大小和内存回收数量,其中,第一时间段早于第二时间段,基于内存回收大小和内存回收数量,对电子设备进行内存回收。相较于图3所示的内存回收方法,本实施例还基于窗口数据确定电子设备的内存回收大小和内存回收数量,并基于内存回收大小和内存回收数量对电子设备进行内存回收,从而提升内存回收的合理性。

请参阅图7,图7示出了本申请又再一个实施例提供的内存回收方法的流程示意图。该方法应用于上述电子设备,下面将针对图7所示的流程进行详细的阐述,所述内存回收方法具体可以包括以下步骤:

步骤S510:获取历史数据,其中,所述历史数据表征所述电子设备在至少一个历史时间段的内存分配参数,所述至少一个历史时间段包括所述第一时间段。

在本实施例中,可以获取可以用于表征电子设备在至少一个历史时间段的内存分配参数的历史数据,其中,该至少一个历史时间段包括第一时间段。作为一种方式,当该历史时间段对应的数量为一个时,则该历史时间段仅包括第一时间段,当该历史时间段对应的数量为多个时,则该历史时间段包括第一时间段以及其他时间段。

在一些实施方式中,该历史数据可以仅包括电子设备在至少一个历史时间段的内存分配参数,也可以包括电子设备在至少一个历史时间段的内存分配参数和内存分配变化趋势,在此不做限定。其中,内存分配变化趋势包括:内存分配逐渐减小、内存分配逐渐增大、内存分配保持不变等。

步骤S520:基于所述历史数据,生成滑动窗口并确定所述滑动窗口的窗口数据。

在本实施例中,在获取历史数据后,可以基于历史数据,生成滑动窗口并确定滑动窗口的窗口数据。

请参阅图8,图8示出了可用于本申请实施例提供的内存回收方法的框架图。如图8所示的,电子设备可以应用轻量级预测机制,其中,轻量级预测机制基于所获取的历史数据,根据时间轴生成一个滑动窗口,通过滑动窗口的窗口数据来预测确定内存回收参数(内存回收大小和内存回收数量),从而确定内存回收方案并基于该内存回收方案进行内存回收。

步骤S530:获取滑动窗口的窗口数据,其中,所述窗口数据包括所述电子设备在第一时间段的内存分配参数。

步骤S540:基于所述窗口数据,确定所述电子设备在第二时间段的内存回收参数,其中,所述第一时间段早于所述第二时间段。

步骤S550:基于所述内存回收参数,对所述电子设备进行内存回收。

其中,步骤S530-步骤S550的具体描述请参阅步骤S110-步骤S130,在此不再赘述。

本申请又再一个实施例提供的内存回收方法,获取历史数据,其中,历史数据表征电子设备在至少一个历史时间段的内存分配参数,至少一个历史时间段包括第一时间段,基于历史数据,生成滑动窗口并确定滑动窗口的窗口数据,获取滑动窗口的窗口数据,其中,窗口数据包括电子设备在第一时间段的内存分配参数,基于窗口数据,确定电子设备在第二时间段的内存回收参数,其中,第一时间段早于第二时间段,基于内存回收参数,对电子设备进行内存回收。相较于图3所示的内存回收方法,本实施例还基于包含历史时间段的内存分配参数的历史数据生成滑动窗口,以实现滑动窗口的动态生成,提升内存回收的合理性。

请参阅图9,图9示出了本申请实施例提供的内存回收装置的模块框图。该内存回收装置300应用于上述电子设备,下面将针对图9所示的框图进行阐述,所述内存回收装置300包括:窗口数据获取模块310、内存回收参数确定模块320以及内存回收模块330,其中:

窗口数据获取模块310,用于获取滑动窗口的窗口数据,其中,所述窗口数据包括所述电子设备在第一时间段的内存分配参数。

内存回收参数确定模块320,用于基于所述窗口数据,确定所述电子设备在第二时间段的内存回收参数,其中,所述第一时间段早于所述第二时间段。

进一步地,所述内存回收参数确定模块320包括:内存需求参数确定子模块和内存回收参数确定子模块,其中:

内存需求参数确定子模块,用于基于所述窗口数据,确定所述电子设备在所述第二时间段的内存需求参数。

内存回收参数确定子模块,用于基于所述内存需求参数,确定所述电子设备在所述第二时间段的内存回收参数。

内存回收模块330,用于基于所述内存回收参数,对所述电子设备进行内存回收。

进一步地,所述内存回收模块330包括:内存回收子模块,其中:

内存回收子模块,用于基于所述内存回收大小和所述内存回收数量,对所述电子设备进行内存回收。

进一步地,所述内存回收装置300还包括:内存回收水线调节模块,其中:

内存回收水线调节模块,用于基于所述内存回收参数,对所述电子设备的内存回收水线进行调节。

进一步地,所述内存水线调整模块包括:内存回收水线调节子模块,其中:

内存回收水线调节子模块,用于基于所述内存回收参数,将所述电子设备的内存回收水线调节至当前内存回收水线,其中,所述当前内存回收水线对应的参数等于或大于所述内存回收参数。

进一步地,所述内存回收装置300还包括:历史数据获取模块和窗口数据生成模块,其中:

历史数据获取模块,用于获取历史数据,其中,所述历史数据表征所述电子设备在至少一个历史时间段的内存分配参数,其中,所述至少一个历史时间段包括所述第一时间段。

窗口数据生成模块,用于基于所述历史数据,生成滑动窗口并确定所述滑动窗口的窗口数据。

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

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

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

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

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

综上所述,本申请实施例提供的内存回收方法、装置、电子设备以及存储介质,获取滑动窗口的窗口数据,其中,窗口数据包括电子设备在第一时间段的内存分配参数,基于窗口数据,确定电子设备在第二时间段的内存回收参数,其中,第一时间段早于第二时间段,基于内存回收参数,对电子设备进行内存回收,从而通过包括内存分配参数的历史数据来动态生成滑动窗口的机制,预测内存回收参数并进行内存回收,从而提升了内存的读写效率。

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

相关技术
  • 内存回收方法、装置、存储介质及电子设备
  • 一种内存回收方法、装置、电子设备及存储介质
技术分类

06120113098760