CN109857555A - 内存回收方法及装置、存储介质和电子设备 - Google Patents

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

Info

Publication number
CN109857555A
CN109857555A CN201910036033.4A CN201910036033A CN109857555A CN 109857555 A CN109857555 A CN 109857555A CN 201910036033 A CN201910036033 A CN 201910036033A CN 109857555 A CN109857555 A CN 109857555A
Authority
CN
China
Prior art keywords
destination application
ems memory
memory occupation
grade
ems
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.)
Granted
Application number
CN201910036033.4A
Other languages
English (en)
Other versions
CN109857555B (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 CN201910036033.4A priority Critical patent/CN109857555B/zh
Publication of CN109857555A publication Critical patent/CN109857555A/zh
Application granted granted Critical
Publication of CN109857555B publication Critical patent/CN109857555B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种内存回收方法及装置、存储介质和电子设备,涉及计算机技术领域。该内存回收方法包括:响应目标应用程序的启动指令,判断目标应用程序是否满足预设内存占用要求;如果目标应用程序满足预设内存占用要求,则确定目标应用程序的内存占用等级;确定目标应用程序的内存占用量,并根据目标应用程序的内存占用量和内存占用等级进行内存回收。本公开可以提高应用程序启动时系统的流畅度。

Description

内存回收方法及装置、存储介质和电子设备
技术领域
本公开涉及计算机技术领域,具体而言,涉及一种内存回收方法、内存回收装置、存储介质和电子设备。
背景技术
随着计算机技术的发展以及人们对工作、生活的追求不断提高,终端设备上安装的应用程序(Application,APP)越来越丰富。然而,各种应用程序的缓存以及无用进程的后台运行,会使终端设备的可用内存变得越来越少,出现内存不足的问题。
目前,一旦内存不足,终端设备就会进行内存回收,内存回收需要一定时间,尤其在分配较多内存的场景中,会出现终端设备响应慢、卡顿的情况,严重影响终端设备的性能和用户体验。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开的目的在于提供一种内存回收方法、内存回收装置、存储介质和电子设备,进而至少在一定程度上克服在分配内存的场景中由于内存回收而导致终端设备响应慢的问题。
根据本公开的一个方面,提供一种内存回收方法,包括:响应目标应用程序的启动指令,判断目标应用程序是否满足预设内存占用要求;如果目标应用程序满足预设内存占用要求,则确定目标应用程序的内存占用等级;确定目标应用程序的内存占用量,并根据目标应用程序的内存占用量和内存占用等级进行内存回收。
根据本公开的一个方面,提供一种内存回收装置,包括:启动响应模块,用于响应目标应用程序的启动指令,判断目标应用程序是否满足预设内存占用要求;等级确定模块,用于如果目标应用程序满足预设内存占用要求,则确定目标应用程序的内存占用等级;内存回收模块,用于确定目标应用程序的内存占用量,并根据目标应用程序的内存占用量和内存占用等级进行内存回收。
根据本公开的一个方面,提供一种存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述内存回收方法。
根据本公开的一个方面,提供一种电子设备,包括:处理器;以及存储器,用于存储处理器的可执行指令;其中,处理器配置为经由执行可执行指令来执行上述内存回收方法。
在本公开的一些实施例所提供的技术方案中,如果待启动的目标应用程序满足预设内存占用要求,则确定目标应用程序的内存占用等级,并根据目标应用程序的内存占用量和内存占用等级进行内存回收。一方面,在内存回收前,确定目标应用程序的内存占用量,即需要释放的内存,在目标应用程序启动之前,完成目标应用程序所需内存的回收,可以避免相关技术中仅在内存不足时回收内存而造成终端设备响应慢、卡顿的问题,本公开的方案使系统运行更加流畅,提升了用户体验;另一方面,可以根据内存占用等级确定出针对目标应用程序的内存回收策略,进而基于内存回收策略对内存进行回收,由此,可以实现不同应用程序的个性化内存回收需求;再一方面,在目标应用程序满足预设内存占用要求时,执行本公开内存回收的步骤,在这种情况下,避免了未满足预设内存占用要求的应用程序执行本公开的内存回收步骤,节约了系统资源。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1示意性示出了根据本公开的示例性实施方式的内存回收方法的流程图;
图2示意性示出了根据本公开的示例性实施方式的内存回收装置的方框图;
图3示意性示出了根据本公开的示例性实施方式的启动响应模块的方框图;
图4示意性示出了根据本公开的示例性实施方式的等级确定模块的方框图;
图5示意性示出了根据本公开的另一示例性实施方式的等级确定模块的方框图;
图6示意性示出了根据本公开的示例性实施方式的第二等级确定单元的方框图;
图7示意性示出了根据本公开的另一示例性实施方式的内存回收装置的方框图;
图8示意性示出了根据本公开的示例性实施方式的白名单添加模块的方框图;
图9示意性示出了根据本公开的示例性实施方式的内存回收模块的方框图;
图10示意性示出了根据本公开的另一示例性实施方式的内存回收模块的方框图;
图11示意性示出了根据本公开的再一示例性实施方式的内存回收模块的方框图;
图12示意性示出了根据本公开的示例性实施方式的电子设备的方框图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的步骤。例如,有的步骤还可以分解,而有的步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
目前,Linux内核内存回收技术是:仅当检测到内存空间不足时才会进行内存回收。然而,在出现大内存使用场景(例如,需要缓存大文件、启动较大应用程序等)的情况下,如果内存空间不足才去进行内存回收的过程,则会导致系统反应慢、卡顿的问题,严重影响设备的性能和用户体验。
鉴于此,本公开提供了一种新的内存回收方法及内存回收装置。
本公开示例性实施方式的内存回收方法可以由终端设备来实现,也就是说,终端设备可以执行下述内存回收方法的各个步骤。其中,终端设备可以包括但不限于手机、平板、个人计算机、智能手表等。在这种情况下,下述内存回收装置可以配置在终端设备中。
图1示意性示出了本公开的示例性实施方式的内存回收方法的流程图。参考图1,所述内存回收方法可以包括以下步骤:
S12.响应目标应用程序的启动指令,判断目标应用程序是否满足预设内存占用要求。
终端设备可以安装有多个应用程序,本公开示例性实施方式中所述的目标应用程序可以是这些应用程序中的一个,本公开对目标应用程序的领域、类型等不做特殊限制。
目标应用程序的启动指令可以基于用户的启动操作而生成,具体的,用户可以点击目标应用程序的图标,终端设备可以基于该点击操作生成目标应用程序的启动指令。
在这种情况下,终端设备可以响应该启动指令判断目标应用程序是否满足预设内存占用要求。其中,预设内存占用要求可以由开发人员自行设定。
根据本公开的一些实施例,开发人员可以根据各个应用程序的内存占用量确定出包括一些应用程序信息的白名单。开发人员可以通过服务器将白名单发送至终端设备,以便终端设备利用该白名单判断目标应用程序是否满足预设内存占用要求。具体的,终端设备可以判断目标应用程序是否属于白名单,其中,如果目标应用程序属于白名单,例如,白名单中包含有目标应用程序的标识,则可以确定目标应用程序满足预设内存占用要求。
本公开还提供了一种更新白名单的方案。具体的,开发人员可以预先配置一白名单添加条件,如果应用程序A上线,则判断应用程序A的内存占用量是否满足白名单添加条件,如果满足,则将应用程序A添加至白名单,例如,可以将应用程序A的标识(例如,名称、编号等)添加至白名单,以实现白名单的更新。
上述白名单添加条件可以例如包括:应用程序启动时一次性分配大于100M的内存,或者应用程序启动时需要在一段时间内连续预定次数分配大于5M的内存(例如,5秒内连续30次分配大于5M内存),等等。应当理解的是,上述一次性分配大于100M以及5秒内连续30次分配5M内存仅是示例性的说明,并不应作为本公开构思的限制,白名单添加条件中的单次内存占用量和/或连续多次内存占用量还可以被设置为其他数值。
例如,应用程序A启动时需要终端设备为其一次性分配200M内存,如果白名单添加条件包括应用程序启动时一次性分配大于100M的内存,则将应用程序A添加至白名单。
容易理解的是,上述应用程序A上线可以例如指代应用程序A进入服务器的应用程序商店,在终端设备下载应用程序A之后,服务器可以将该应用程序A是否属于白名单的信息发送至终端设备,以便在目标应用程序是应用程序A时,确定出目标应用程序满足预设内存占用要求。
此外,还可以采用机器学习的方法来确定应用程序A是否可以被添加至白名单。首先,开发人员可以构建一有监督的分类模型作为机器学习模型,然而,本公开示例性实施方式的机器学习模型可以包括但不限于卷积神经网络模型、决策树模型、支持向量机模型等,本公开对机器学习模型的维度和函数不做特殊限制;接下来,开发人员可以选择一些应用程序的内存占用量作为训练样本,并标记这些训练样本对应的模型输出结果,以便对上述机器学习模型进行训练;随后,可以将应用程序A的内存占用量输入训练后的机器学习模型中,由此,机器学习模型的输出结果即为应用程序A是否可以被添加至白名单的结果。例如,机器学习模型的输出结果“1”标识应用程序A可以被添加至白名单,机器学习模型的输出结果“0”标识应用程序A不能被添加至白名单。
根据本公开的另一些实施例,在判断目标应用程序是否满足预设内存占用要求的过程中,终端设备可以确定目标应用程序的内存占用量,如果该内存占用量满足占用量判断要求,则可以确定出目标应用程序满足预设内存占用要求。其中,占用量判断要求可以与上面所述的白名单添加条件相同。
S14.如果目标应用程序满足预设内存占用要求,则确定目标应用程序的内存占用等级。
在上述以白名单的方式确定目标应用程序满足预设内存占用要求的实施例中,开发人员可以预先配置白名单内各应用程序与内存占用等级的映射关系,并可以根据该映射关系确定出目标应用程序的内存占用等级。其中,该映射关系可以存储于服务器中,终端设备在执行本公开方法的过程中,可以向服务器发送目标应用程序的标识,服务器可以对应向终端设备发送目标应用程序的内存占用等级。另外,服务器可以将该映射关系发送至终端设备,以便终端设备可以通过本地直接确定出目标应用程序的内存占用等级。
此外,如果步骤S12中判断出目标应用程序不属于白名单,则终端设备可以获取目标应用程序的内存占用量,并判断目标应用程序的内存占用量是否满足白名单添加条件,如果目标应用程序的内存占用量满足白名单添加条件,则可以将目标应用程序添加至白名单,以便进行步骤S14的过程。
具体的,如步骤S12中一些实施例,可以采用上述机器学习模型确定目标应用程序是否满足白名单添加条件。首先,可以将目标应用程序的内存占用量输入训练后的机器学习模型中;接下来,可以根据机器学习模型的输出结果判断目标应用程序的内存占用量是否满足白名单添加条件。
在上述通过目标应用程序的内存占用量的方式确定目标应用程序满足预设内存占用要求的实施例中,可以根据目标应用程序的内存占用量确定目标应用程序的内存占用等级。
如果目标应用程序的内存占用量为单次内存占用量,则可以根据目标应用程序的单次内存占用量来确定目标应用程序的内存占用等级。具体的,可以将目标应用程序的单次内存占用量与多个预设值进行比较,并根据比较结果确定出内存占用等级。例如,如果目标应用程序启动时需要一次性分配200M以上的内存,则确定目标应用程序的内存占用等级为1级,可以记为“high”;如果目标应用程序启动时需要一次性分配200M至100M之间的内存,则确定目标应用程序的内存占用等级为2级,可以记为“normal”;如果目标应用程序启动时需要一次性分配100M以下的内存,则确定目标应用程序的内存占用等级为3级,可以记为“low”。应当注意的是,上述“200M”、“100M”以及划分为三级仅是示例性说明,不应作为本公开的限制。
如果目标应用程序的内存占用量为连续多次内存占用量,则可以根据目标应用程序的连续多次内存占用量确定目标应用程序的内存占用等级。具体的,可以将目标应用程序的连续多次内存占用量与另外多个预设值进行比较,并根据比较结果确定出内存占用等级。例如,如果目标应用程序启动时需要多次且每次大于20M的内存分配,则确定目标应用程序的内存占用等级为1级,可以记为“high”;如果目标应用程序启动时需要多次且每次20M至10M的内存分配,则确定目标应用程序的内存占用等级为2级,可以记为“normal”;如果目标应用程序启动时需要多次且每次小于10M的内存分配,则确定目标应用程序的内存占用等级为3级,可以记为“low”。类似的,应当注意的是,上述“20M”、“10M”以及划分为三级仅是示例性说明,不应作为本公开的限制。
S16.确定目标应用程序的内存占用量,并根据目标应用程序的内存占用量和内存占用等级进行内存回收。
根据本公开的一些实施例,终端设备可以根据目标应用程序的内存占用等级确定内存中匿名页(例如,通过动态内存分配函数分配的内存)和文件页(例如,读写文件时分配的内存)的回收比例。
具体的,针对匿名页的回收,可以将近期(例如,一天、一周等)使用较少的匿名页压缩后存放,例如,150M的匿名页压缩后变为50M,下次有使用需求时进行解压缩。针对文件页的回收,可以将近期使用较少的文件进行回收,其中,如果文件页未被修改过,则可以直接丢弃;如果文件页被修改过,则先将修改后的文件页写入磁盘后再丢弃。
可以看出,匿名页的回收方式为页交换,回收耗时长,效率较低;文件页的回收方式为页丢弃或页回写,回收耗时短,效率高。然而,文件页的回收方式不利于下次应用程序的快速响应。由此,本公开的示例性实施方式中,可以根据目标应用程序的内存占用等级确定内存中匿名页与文件页的回收比例。
仍以上述为例,如果目标应用程序的内存占用等级为1级,表明内存回收急切,则可以为文件页的回收配置较大比例,例如,可以确定匿名页与文件页的回收比例为1:4;如果目标应用程序的内存占用等级为2级,可以例如确定匿名页与文件页的回收比例为3:7;如果目标应用程序的内存占用等级为3级,可以例如确定匿名页与文件页的回收比例为5:5。
应当理解的是,上述回收比例的数值仅是示例性的描述,不应将这些作为本公开构思的限制。
在确定出匿名页与文件页的回收比例后,终端设备可以根据该回收比例以及目标应用程序的内存占用量进行内存回收。例如,目标应用程序的内存占用量为150M,确定出的回收比例为5:5,则回收匿名页75M,回收文件页75M。
根据本公开的另一些实施例,终端设备可以根据目标应用程序的内存占用等级确定单次内存回收量。具体的,单次内存回收量可以包括活跃数据转换为不活跃数据的单次转换量以及不活跃数据的单次回收量,其中,内存中数据的活跃与否可以根据近期用户的使用情况而确定,例如,距当前两天内,数据被使用,则可以将该数据确定为活跃数据,反之则确定为不活跃数据。在内存回收的情况下,终端设备可以将活跃数据转换为不活跃数据,并对不活跃数据进行回收。
仍以上述为例,如果目标应用程序的内存占用等级为1级,则可以确定出活跃数据转换为不活跃数据的单次转换量为50M,不活跃数据的单次回收量为100M;如果目标应用程序的内存占用等级为2级,则可以确定出确定出活跃数据转换为不活跃数据的单次转换量为20M,不活跃数据的单次回收量为50M;如果目标应用程序的内存占用等级为3级,则可以确定出活跃数据转换为不活跃数据的单次转换量为10M,不活跃数据的单次回收量为20M。
应当理解的是,上述各转换量及回收量的数值仅是示例性的描述,不应将这些作为本公开构思的限制。
在确定单次内存回收量后,终端设备可以根据目标应用程序的内存占用量和单次内存回收量进行内存回收。应当理解的是,如果根据内存占用等级确定出的不活跃数据的单次回收量不能满足内存回收需求,则可以增大不活跃数据的单次回收量。
根据本公开的另一些实施例,终端设备可以根据目标应用程序的内存占用量和内存占用等级确定内存中待清理的进程。具体的,根据目标应用程序的内存占用量确定待清理进程的数量,根据目标应用程序的内存占用等级确定待清理进程的种类。例如,在内存占用等级为1级的情况下,终端设备无需考虑进程的种类,也就是说,为了加速内存回收,直接根据内存占用量确定待清理进程的数量。又例如,在内存占用等级为3级的情况下,说明内存回收不是很急切,终端设备可以判断进程是否为常用进程,在进程不是常用进程的情况下,可以基于内存占用量将该进程确定为待清理的进程。
接下来,在确定出待清理的进程后,可以清理这些进程,以进行内存回收。具体的,可以直接杀掉这些进程。
综上所述,利用本公开的内存回收方法,一方面,在内存回收前,确定目标应用程序的内存占用量,即需要释放的内存,在目标应用程序启动之前,完成目标应用程序所需内存的回收,可以避免相关技术中仅在内存不足时回收内存而造成终端设备响应慢、卡顿的问题,本公开的方案使系统运行更加流畅,提升了用户体验;另一方面,可以根据内存占用等级确定出针对目标应用程序的内存回收策略,进而基于内存回收策略对内存进行回收,由此,可以实现不同应用程序的个性化内存回收需求;再一方面,在目标应用程序满足预设内存占用要求时,执行本公开内存回收的步骤,在这种情况下,避免了未满足预设内存占用要求的应用程序执行本公开的内存回收步骤,节约了系统资源;又一方面,采用了白名单的方式确定内存回收,过程简单,进一步节约了系统资源。
应当注意,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
进一步的,本示例实施方式中还提供了一种内存回收装置。
图2示意性示出了本公开的示例性实施方式的内存回收装置的方框图。参考图2,根据本公开的示例性实施方式的内存回收装置2可以包括启动响应模块21、等级确定模块23和内存回收模块25。
具体的,启动响应模块21可以用于响应目标应用程序的启动指令,判断目标应用程序是否满足预设内存占用要求;等级确定模块23可以用于如果目标应用程序满足预设内存占用要求,则确定目标应用程序的内存占用等级;内存回收模块25可以用于确定目标应用程序的内存占用量,并根据目标应用程序的内存占用量和内存占用等级进行内存回收。
在本公开的示例性实施方式的内存回收装置中,一方面,在内存回收前,确定目标应用程序的内存占用量,即需要释放的内存,在目标应用程序启动之前,完成目标应用程序所需内存的回收,可以避免相关技术中仅在内存不足时回收内存而造成终端设备响应慢、卡顿的问题,本公开的方案使系统运行更加流畅,提升了用户体验;另一方面,可以根据内存占用等级确定出针对目标应用程序的内存回收策略,进而基于内存回收策略对内存进行回收,由此,可以实现不同应用程序的个性化内存回收需求;再一方面,在目标应用程序满足预设内存占用要求时,执行本公开内存回收的步骤,在这种情况下,避免了未满足预设内存占用要求的应用程序执行本公开的内存回收步骤,节约了系统资源。
根据本公开的示例性实施例,参考图3,启动响应模块21可以包括白名单判断单元301。
具体的,白名单判断单元301可以用于判断目标应用程序是否属于白名单;其中,如果目标应用程序属于白名单,则确定目标应用程序满足预设内存占用要求。
根据本公开的示例性实施例,参考图4,等级确定模块23可以包括第一等级确定单元401。
具体的,第一等级确定单元401可以用于根据白名单内各应用程序与内存占用等级的映射关系,确定目标应用程序的内存占用等级。
在上述实施例中,采用了白名单的方式确定内存回收,过程简单,进一步节约了系统资源。
根据本公开的示例性实施例,参考图5,等级确定模块23可以包括占用量确定单元501和第二等级确定单元503。
具体的,占用量确定单元501可以用于确定目标应用程序的内存占用量;第二等级确定单元503可以用于根据目标应用程序的内存占用量确定目标应用程序的内存占用等级。
根据本公开的示例性实施例,参考图6,第二等级确定单元503可以包括第一等级确定子单元601和第二等级确定子单元603。
具体的,第一等级确定子单元601可以用于如果内存占用量为单次内存占用量,则根据目标应用程序的单次内存占用量确定目标应用程序的内存占用等级;第二等级确定子单元603可以用于如果内存占用量为连续多次内存占用量,则根据目标应用程序的连续多次内存占用量确定目标应用程序的内存占用等级。
根据本公开的示例性实施例,参考图7,内存回收装置7相比于内存回收装置2,还可以包括白名单添加模块71。
具体的,白名单添加模块71可以用于如果目标应用程序不属于白名单,则获取目标应用程序的内存占用量;判断目标应用程序的内存占用量是否满足白名单添加条件;如果目标应用程序的内存占用量满足白名单添加条件,则将目标应用程序添加至白名单。
根据本公开的示例性实施例,参考图8,白名单添加模块71可以包括白名单添加单元801。
具体的,白名单添加单元801可以用于将所述目标应用程序的内存占用量输入一训练后的机器学习模型中,根据所述机器学习模型的输出结果判断所述目标应用程序的内存占用量是否满足白名单添加条件。
采用机器学习的方式使得确定出结果,避免了人为分析,节省了人力成本。
根据本公开的示例性实施例,参考图9,内存回收模块25可以包括回收比例确定单元901和第一内存回收单元903。
具体的,回收比例确定单元901可以用于根据目标应用程序的内存占用等级,确定内存中匿名页与文件页的回收比例;第一内存回收单元903可以用于根据目标应用程序的内存占用量以及匿名页与文件页的回收比例进行内存回收。
根据本公开的示例性实施例,第一内存回收单元903还可以被配置为执行:如果文件页被修改,则将修改后的文件页写入磁盘。
根据本公开的示例性实施例,参考图10,内存回收模块25可以包括单次回收量确定单元101和第二内存回收单元103。
具体的,单次回收量确定单元101可以用于根据目标应用程序的内存占用等级,确定单次内存回收量;其中,单次内存回收量包括活跃数据转换为不活跃数据的单次转换量以及不活跃数据的单次回收量;第二内存回收单元103可以用于根据目标应用程序的内存占用量和单次内存回收量进行内存回收。
根据本公开的示例性实施例,参考图11,内存回收模块25可以包括进程确定膜单元111和第三内存回收单元113。
具体的,进程确定膜单元111可以用于根据所述目标应用程序的内存占用量和内存占用等级确定内存中待清理的进程;第三内存回收单元113可以用于清理所述待清理的进程,以进行内存回收。
由于本发明实施方式的程序运行性能分析装置的各个功能模块与上述方法发明实施方式中相同,因此在此不再赘述。
在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。
程序产品可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光盘、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
在本公开的示例性实施例中,还提供了一种能够实现上述方法的电子设备。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
下面参照图12来描述根据本发明的这种实施方式的电子设备1200。图12显示的电子设备1200仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图12所示,电子设备1200以通用计算设备的形式表现。电子设备1200的组件可以包括但不限于:上述至少一个处理单元1210、上述至少一个存储单元1220、连接不同系统组件(包括存储单元1220和处理单元1210)的总线1230、显示单元1240。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元1210执行,使得所述处理单元1210执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元1210可以执行如图1中所示的步骤S12:响应目标应用程序的启动指令,判断目标应用程序是否满足预设内存占用要求;步骤S14:如果目标应用程序满足预设内存占用要求,则确定目标应用程序的内存占用等级;步骤S16:确定目标应用程序的内存占用量,并根据目标应用程序的内存占用量和内存占用等级进行内存回收。
存储单元1220可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)12201和/或高速缓存存储单元12202,还可以进一步包括只读存储单元(ROM)12203。
存储单元1220还可以包括具有一组(至少一个)程序模块12205的程序/实用工具12204,这样的程序模块12205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线1230可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备1200也可以与一个或多个外部设备1300(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备1200交互的设备通信,和/或与使得该电子设备1200能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口1250进行。并且,电子设备1200还可以通过网络适配器1260与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器1260通过总线1230与电子设备1200的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备1200使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。
此外,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施例。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限。

Claims (14)

1.一种内存回收方法,其特征在于,包括:
响应目标应用程序的启动指令,判断所述目标应用程序是否满足预设内存占用要求;
如果所述目标应用程序满足预设内存占用要求,则确定所述目标应用程序的内存占用等级;
确定所述目标应用程序的内存占用量,并根据所述目标应用程序的内存占用量和内存占用等级进行内存回收。
2.根据权利要求1所述的内存回收方法,其特征在于,判断所述目标应用程序是否满足预设内存占用要求包括:
判断所述目标应用程序是否属于白名单;
其中,如果所述目标应用程序属于所述白名单,则确定所述目标应用程序满足预设内存占用要求。
3.根据权利要求2所述的内存回收方法,其特征在于,确定所述目标应用程序的内存占用等级包括:
根据所述白名单内各应用程序与内存占用等级的映射关系,确定所述目标应用程序的内存占用等级。
4.根据权利要求2所述的内存回收方法,其特征在于,确定所述目标应用程序的内存占用等级包括:
确定所述目标应用程序的内存占用量;
根据所述目标应用程序的内存占用量确定所述目标应用程序的内存占用等级。
5.根据权利要求4所述的内存回收方法,其特征在于,根据启动所述目标应用程序的内存占用量确定所述目标应用程序的内存占用等级包括:
如果所述内存占用量为单次内存占用量,则根据目标应用程序的单次内存占用量确定所述目标应用程序的内存占用等级;
如果所述内存占用量为连续多次内存占用量,则根据目标应用程序的连续多次内存占用量确定所述目标应用程序的内存占用等级。
6.根据权利要求2所述的内存回收方法,其特征在于,所述内存回收方法还包括:
如果所述目标应用程序不属于所述白名单,则获取所述目标应用程序的内存占用量;
判断所述目标应用程序的内存占用量是否满足白名单添加条件;
如果所述目标应用程序的内存占用量满足所述白名单添加条件,则将所述目标应用程序添加至所述白名单。
7.根据权利要求6所述的内存回收方法,其特征在于,判断所述目标应用程序的内存占用量是否满足白名单添加条件包括:
将所述目标应用程序的内存占用量输入一训练后的机器学习模型中,根据所述机器学习模型的输出结果判断所述目标应用程序的内存占用量是否满足白名单添加条件。
8.根据权利要求1至7中任一项所述的内存回收方法,其特征在于,根据所述目标应用程序的内存占用量和内存占用等级进行内存回收包括:
根据所述目标应用程序的内存占用等级,确定内存中匿名页与文件页的回收比例;
根据所述目标应用程序的内存占用量以及所述匿名页与文件页的回收比例进行内存回收。
9.根据权利要求8所述的内存回收方法,其特征在于,在对内存中文件页进行回收之前,所述内存回收方法还包括:
如果文件页被修改,则将修改后的文件页写入磁盘。
10.根据权利要求1至7中任一项所述的内存回收方法,其特征在于,根据所述目标应用程序的内存占用量和内存占用等级进行内存回收包括:
根据所述目标应用程序的内存占用等级,确定单次内存回收量;其中,所述单次内存回收量包括活跃数据转换为不活跃数据的单次转换量以及不活跃数据的单次回收量;
根据所述目标应用程序的内存占用量和所述单次内存回收量进行内存回收。
11.根据权利要求1至7中任一项所述的内存回收方法,其特征在于,根据所述目标应用程序的内存占用量和内存占用等级进行内存回收包括:
根据所述目标应用程序的内存占用量和内存占用等级确定内存中待清理的进程;
清理所述待清理的进程,以进行内存回收。
12.一种内存回收装置,其特征在于,包括:
启动响应模块,用于响应目标应用程序的启动指令,判断所述目标应用程序是否满足预设内存占用要求;
等级确定模块,用于如果所述目标应用程序满足预设内存占用要求,则确定所述目标应用程序的内存占用等级;
内存回收模块,用于确定所述目标应用程序的内存占用量,并根据所述目标应用程序的内存占用量和内存占用等级进行内存回收。
13.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至11中任一项所述的内存回收方法。
14.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1至11中任一项所述的内存回收方法。
CN201910036033.4A 2019-01-15 2019-01-15 内存回收方法及装置、存储介质和电子设备 Active CN109857555B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910036033.4A CN109857555B (zh) 2019-01-15 2019-01-15 内存回收方法及装置、存储介质和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910036033.4A CN109857555B (zh) 2019-01-15 2019-01-15 内存回收方法及装置、存储介质和电子设备

Publications (2)

Publication Number Publication Date
CN109857555A true CN109857555A (zh) 2019-06-07
CN109857555B CN109857555B (zh) 2023-02-28

Family

ID=66894866

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910036033.4A Active CN109857555B (zh) 2019-01-15 2019-01-15 内存回收方法及装置、存储介质和电子设备

Country Status (1)

Country Link
CN (1) CN109857555B (zh)

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110532095A (zh) * 2019-08-27 2019-12-03 Oppo(重庆)智能科技有限公司 内存优化方法及装置、电子设备、存储介质
CN110543384A (zh) * 2019-09-05 2019-12-06 Oppo广东移动通信有限公司 内存的回写方法、装置、终端及存储介质
CN110704189A (zh) * 2019-09-27 2020-01-17 Oppo(重庆)智能科技有限公司 内存回收方法、装置以及电子设备
CN110727473A (zh) * 2019-10-10 2020-01-24 Oppo广东移动通信有限公司 资源控制方法及装置、系统、存储介质和电子设备
CN110727605A (zh) * 2019-09-27 2020-01-24 Oppo(重庆)智能科技有限公司 内存回收方法、装置以及电子设备
CN110727607A (zh) * 2019-09-27 2020-01-24 Oppo(重庆)智能科技有限公司 内存回收方法、装置以及电子设备
CN110727606A (zh) * 2019-09-27 2020-01-24 Oppo(重庆)智能科技有限公司 内存回收方法、装置以及电子设备
CN110764906A (zh) * 2019-09-27 2020-02-07 Oppo(重庆)智能科技有限公司 内存回收处理方法、装置、电子设备以及存储介质
CN111078406A (zh) * 2019-12-10 2020-04-28 Oppo(重庆)智能科技有限公司 内存管理方法、装置、存储介质及电子设备
CN111625784A (zh) * 2020-05-29 2020-09-04 重庆小雨点小额贷款有限公司 一种应用的反调试方法、相关装置及存储介质
CN111966492A (zh) * 2020-08-05 2020-11-20 Oppo广东移动通信有限公司 内存回收方法、装置、电子设备及计算机可读存储介质
CN112286692A (zh) * 2020-11-20 2021-01-29 北京小米移动软件有限公司 内存回收方法、内存回收装置及存储介质
CN112463374A (zh) * 2020-11-26 2021-03-09 中国第一汽车股份有限公司 一种内存管理方法、装置、设备及存储介质
CN112860444A (zh) * 2021-04-26 2021-05-28 腾讯科技(深圳)有限公司 内存调用信息的确定方法和装置、存储介质及电子设备
CN113419864A (zh) * 2021-07-16 2021-09-21 北京字节跳动网络技术有限公司 一种应用内存管理方法、装置、设备以及存储介质
CN116361200A (zh) * 2022-09-30 2023-06-30 荣耀终端有限公司 一种内存垃圾的回收方法及电子设备
WO2023185684A1 (zh) * 2022-04-01 2023-10-05 华为技术有限公司 一种应用程序的进程查杀方法及电子设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104714895A (zh) * 2015-03-23 2015-06-17 努比亚技术有限公司 一种移动终端及其提高运行速度的方法和装置
US20160055082A1 (en) * 2014-08-20 2016-02-25 Samsung Electronics Co., Ltd. Memory allocating method and electronic device supporting the same
CN106484472A (zh) * 2016-09-29 2017-03-08 华为技术有限公司 一种内存回收方法及终端
CN108228341A (zh) * 2017-08-07 2018-06-29 珠海市魅族科技有限公司 内存回收方法及装置、终端设备及计算机可读存储介质
CN108287761A (zh) * 2017-08-09 2018-07-17 珠海市魅族科技有限公司 内存回收方法及装置、终端设备及计算机可读存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160055082A1 (en) * 2014-08-20 2016-02-25 Samsung Electronics Co., Ltd. Memory allocating method and electronic device supporting the same
CN104714895A (zh) * 2015-03-23 2015-06-17 努比亚技术有限公司 一种移动终端及其提高运行速度的方法和装置
CN106484472A (zh) * 2016-09-29 2017-03-08 华为技术有限公司 一种内存回收方法及终端
CN108228341A (zh) * 2017-08-07 2018-06-29 珠海市魅族科技有限公司 内存回收方法及装置、终端设备及计算机可读存储介质
CN108287761A (zh) * 2017-08-09 2018-07-17 珠海市魅族科技有限公司 内存回收方法及装置、终端设备及计算机可读存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JOONGJIN KOOK ET AL.: ""Optimization of Out of Memory Killer for Embedded Linux Environments"", 《ACM》 *
余志诚: ""一种移动智能终端的内存回收管理算法"", 《计算机与数字工程》 *

Cited By (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110532095A (zh) * 2019-08-27 2019-12-03 Oppo(重庆)智能科技有限公司 内存优化方法及装置、电子设备、存储介质
CN110543384A (zh) * 2019-09-05 2019-12-06 Oppo广东移动通信有限公司 内存的回写方法、装置、终端及存储介质
CN110727605B (zh) * 2019-09-27 2022-06-21 Oppo(重庆)智能科技有限公司 内存回收方法、装置以及电子设备
CN110727605A (zh) * 2019-09-27 2020-01-24 Oppo(重庆)智能科技有限公司 内存回收方法、装置以及电子设备
CN110727607A (zh) * 2019-09-27 2020-01-24 Oppo(重庆)智能科技有限公司 内存回收方法、装置以及电子设备
CN110727606A (zh) * 2019-09-27 2020-01-24 Oppo(重庆)智能科技有限公司 内存回收方法、装置以及电子设备
CN110764906A (zh) * 2019-09-27 2020-02-07 Oppo(重庆)智能科技有限公司 内存回收处理方法、装置、电子设备以及存储介质
CN110727607B (zh) * 2019-09-27 2022-08-12 Oppo广东移动通信有限公司 内存回收方法、装置以及电子设备
CN110704189A (zh) * 2019-09-27 2020-01-17 Oppo(重庆)智能科技有限公司 内存回收方法、装置以及电子设备
CN110764906B (zh) * 2019-09-27 2022-06-17 Oppo(重庆)智能科技有限公司 内存回收处理方法、装置、电子设备以及存储介质
EP3979082A4 (en) * 2019-09-27 2022-08-17 Guangdong Oppo Mobile Telecommunications Corp., Ltd. METHOD AND APPARATUS FOR RECOVERING MEMORY, ELECTRONIC DEVICE AND STORAGE MEDIA
WO2021057623A1 (zh) * 2019-09-27 2021-04-01 Oppo广东移动通信有限公司 内存回收方法、装置、电子设备及存储介质
CN110727473A (zh) * 2019-10-10 2020-01-24 Oppo广东移动通信有限公司 资源控制方法及装置、系统、存储介质和电子设备
CN110727473B (zh) * 2019-10-10 2023-11-03 Oppo广东移动通信有限公司 资源控制方法及装置、系统、存储介质和电子设备
CN111078406A (zh) * 2019-12-10 2020-04-28 Oppo(重庆)智能科技有限公司 内存管理方法、装置、存储介质及电子设备
CN111078406B (zh) * 2019-12-10 2023-01-10 Oppo(重庆)智能科技有限公司 内存管理方法、装置、存储介质及电子设备
CN111625784B (zh) * 2020-05-29 2023-09-12 重庆小雨点小额贷款有限公司 一种应用的反调试方法、相关装置及存储介质
CN111625784A (zh) * 2020-05-29 2020-09-04 重庆小雨点小额贷款有限公司 一种应用的反调试方法、相关装置及存储介质
CN111966492A (zh) * 2020-08-05 2020-11-20 Oppo广东移动通信有限公司 内存回收方法、装置、电子设备及计算机可读存储介质
CN111966492B (zh) * 2020-08-05 2024-02-02 Oppo广东移动通信有限公司 内存回收方法、装置、电子设备及计算机可读存储介质
CN112286692A (zh) * 2020-11-20 2021-01-29 北京小米移动软件有限公司 内存回收方法、内存回收装置及存储介质
CN112463374A (zh) * 2020-11-26 2021-03-09 中国第一汽车股份有限公司 一种内存管理方法、装置、设备及存储介质
CN112860444A (zh) * 2021-04-26 2021-05-28 腾讯科技(深圳)有限公司 内存调用信息的确定方法和装置、存储介质及电子设备
CN113419864B (zh) * 2021-07-16 2023-04-07 抖音视界有限公司 一种应用内存管理方法、装置、设备以及存储介质
CN113419864A (zh) * 2021-07-16 2021-09-21 北京字节跳动网络技术有限公司 一种应用内存管理方法、装置、设备以及存储介质
WO2023185684A1 (zh) * 2022-04-01 2023-10-05 华为技术有限公司 一种应用程序的进程查杀方法及电子设备
CN116361200A (zh) * 2022-09-30 2023-06-30 荣耀终端有限公司 一种内存垃圾的回收方法及电子设备
CN116361200B (zh) * 2022-09-30 2023-11-14 荣耀终端有限公司 一种内存垃圾的回收方法及电子设备

Also Published As

Publication number Publication date
CN109857555B (zh) 2023-02-28

Similar Documents

Publication Publication Date Title
CN109857555A (zh) 内存回收方法及装置、存储介质和电子设备
CN109857556A (zh) 内存回收方法及装置、存储介质和电子设备
CN107885762B (zh) 智能大数据系统、提供智能大数据服务的方法和设备
CN109753356A (zh) 一种容器资源调度方法、装置及计算机可读存储介质
US11544639B2 (en) Data source-based service customizing device, method and system, and storage medium
KR20180121758A (ko) 사용자 발화를 처리하는 전자 장치 및 이 전자 장치의 제어 방법
CN108139849A (zh) 针对用户选择内容的动作建议
CN110807566A (zh) 人工智能模型评测方法、装置、设备及存储介质
CN105264528A (zh) 集成搜索环境中的客户端意图
WO2006076304A1 (en) Method and system for controlling input modalties in a multimodal dialog system
CN108733703A (zh) 问答系统的答案预测方法及装置、电子设备、存储介质
CN107943582B (zh) 特征处理方法、装置、存储介质及电子设备
CN110321694A (zh) 基于标签更新系统的操作权限分配方法及相关设备
US20220100763A1 (en) Optimizing job runtimes via prediction-based token allocation
CN114373460A (zh) 车载语音助手的指令确定方法、装置、设备及介质
CN116235246A (zh) 基于个性化词汇和用户简档的语音响应系统-个性化语言学ai引擎
CN103095784B (zh) 一种云端用户映射系统和方法
CN112446493A (zh) 使用对话系统来学习和推断判断推理知识
CN117992598A (zh) 基于大模型的需求响应方法、装置、介质及设备
US11681949B2 (en) Power awareness systems and processes
CN115374944B (zh) 模型推理方法、装置、电子设备和存储介质
US12118985B2 (en) Electronic device and method for providing on-device artificial intelligence service
CN109254816A (zh) 素材处理方法及装置、存储介质和电子设备
CN115576789A (zh) 流失用户识别方法和系统
CN112699228A (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