CN114218126A - 内存回收方法和装置 - Google Patents

内存回收方法和装置 Download PDF

Info

Publication number
CN114218126A
CN114218126A CN202111299272.2A CN202111299272A CN114218126A CN 114218126 A CN114218126 A CN 114218126A CN 202111299272 A CN202111299272 A CN 202111299272A CN 114218126 A CN114218126 A CN 114218126A
Authority
CN
China
Prior art keywords
memory
value
processes
oom
adj
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
Application number
CN202111299272.2A
Other languages
English (en)
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.)
Beijing Ziguang Zhanrui Communication Technology Co Ltd
Original Assignee
Beijing Ziguang Zhanrui Communication Technology Co 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 Beijing Ziguang Zhanrui Communication Technology Co Ltd filed Critical Beijing Ziguang Zhanrui Communication Technology Co Ltd
Priority to CN202111299272.2A priority Critical patent/CN114218126A/zh
Publication of CN114218126A publication Critical patent/CN114218126A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5016Allocation 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System (AREA)

Abstract

本申请涉及电子设备技术领域,尤其涉及一种内存回收方法和装置。一种内存回收方法,包括:接收到内存压力阻塞信息PSI事件时,触发内存回收进程;在所述内存回收进程中,获取内存空闲状态信息;如果根据所述内存空闲状态信息确定内存压力需求大于设定值,则确定需要回收的进程个数为多个;根据进程oom_adj值,从正在运行的进程中选取多个进程进行内存回收。在对设备内部进程进行回收时,根据内存空闲状态信息对设备内存压力需求进行判断,以确定回收进程的最佳个数,避免了因为未考虑空闲内存类型,或是只单单回收一个进程而出现回收不积极的情况。

Description

内存回收方法和装置
【技术领域】
本申请涉及电子设备技术领域,尤其涉及一种内存回收方法和装置。
【背景技术】
用户在操作终端设备时,常常会遇到终端系统空闲内存不足的情况,此时 终端会按照LMK(Low Memory Killer,低内存管理)机制对运行在后台的应用 或服务进行内存回收,从而保证前台应用的运行。自kernel4.12之后,电子设备 废弃了kernel中的LMK机制,取而代之的是用户空间的LMKD(Low Memory Killer Daemon,低内存保护管理)机制。在kernel4.14之后,电子设备通过PSI (Pressure stall information,内存压力阻塞信息)来上报内存压力事件,并通过 选取某一个进程进行回收以保证空闲内存足够充足。但是通过这种方法进行进 程回收会因为未考虑空闲内存类型,或是只单单回收一个进程而出现回收不积 极的情况。
【发明内容】
有鉴于此,本发明实施例提供了一种内存回收方法和装置,用以解决现 有技术中在执行内存回收时因为未考虑空闲内存类型,或是只单单回收一个 进程而出现回收不积极的问题。
第一方面,本发明实施例提供一种内存回收方法,包括:
接收到内存压力阻塞信息PSI事件时,触发内存回收进程;
在所述内存回收进程中,获取内存空闲状态信息;
如果根据所述内存空闲状态信息确定内存压力需求大于设定值,则确定需 要回收的进程个数为多个;
根据进程oom_adj值,从正在运行的进程中选取多个进程进行内存回收。
可选的,所述内存空闲状态信息,包括:剩余空闲内存总值、highatomic类 型的空闲内存占比、上层应用的内存需求信息、交换空间空闲占比、进程等待硬 件资源时间以及进程oom_adj值;如果所述内存空闲状态信息满足以下中的一 项或多项的组合,则确定内存压力需求大于设定值,其中包括:
所述剩余空闲内存总值小于内存水位watermark;
highatomic类型的空闲内存占比大于第一阈值;
指定应用发送内存需求信息;
交换空间空闲占比小于指定值;
进程等待硬件资源时间大于第二阈值;
oom_adj值大于预设数值的进程个数大于第三阈值。
可选的,如果所述内存空闲状态信息满足以下组合,则确定内存压力需求大 于设定值,包括:
交换空间空闲占比小于第一指定值且进程等待硬件资源时间大于第二阈值; 或者,
交换空间空闲占比小于第二指定值且oom_adj值大于预设数值的进程个数 大于第三阈值。
可选的,根据进程oom_adj值,从正在运行的进程中选取多个进程进行内存 回收,包括:
按照oom_adj值由大到小的顺序从正在运行的进程中依次选取进程进行内 存回收,直至所选取进程释放内存后使空闲内存总值大于或者等于内存水位 watermark。
可选的,所述内存空闲状态信息包括:交换空间空闲占比;根据进程oom_adj 值,从正在运行的进程中选取多个进程进行内存回收,包括:
如果交换空间空闲占比小于第三指定值且oom_adj值大于预设数值的进程 个数大于第四阈值,则从oom_adj值大于预设数值的进程中确定回收进程,并 并对所述回收进程执行内存回收。
可选的,所述内存空闲状态信息还包括页面抖动值;根据进程oom_adj值, 从正在运行的进程中选取多个进程进行内存回收,包括:
根据所述页面抖动值,确定oom_adj保留阈值,其中,所述页面抖动值与所 述oom_adj保留阈值呈负相关关系,所述页面抖动值越大所述oom_adj保留阈 值越小,所述页面抖动值越小所述oom_adj保留阈值越大;
将oom_adj值小于所述oom_adj保留阈值的进程确定为保留进程,所述保 留进程不执行内存回收;
从oom_adj值大于或者等于所述oom_adj保留阈值的进程中确定回收进程 并对所述回收进程执行内存回收。
可选的,所述内存空闲状态信息还包括剩余空闲内存总值;根据进程 oom_adj值,从正在运行的进程中选取多个进程进行内存回收,包括:
如果所述剩余空闲内存总值大于内存水位watermark,则将oom_adj值为0 的进程确定为保留进程,所述保留进程不执行内存回收;
从oom_adj值不为0的进程中确定回收进程并对所述回收进程执行内存回 收。
第二方面,本发明实施例提供一种内存回收装置,包括:
触发模块,接收到内存压力阻塞信息PSI事件时,触发内存回收进程;
获取模块,在所述内存回收进程中,获取内存空闲状态信息;
确定模块,如果根据所述内存空闲状态信息确定内存压力需求大于设定值, 则确定需要回收的进程个数为多个;
回收模块,根据进程oom_adj值,从正在运行的进程中选取多个进程进行内 存回收。
第三方面,本发明实施例提供一种内存回收设备,包括:
至少一个处理器;以及
与所述处理器通信连接的至少一个存储器,其中:
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述 程序指令能够执行如上述第一方面任一项所述的方法。
可选的,所述计算机可读存储介质包括存储的程序,其中,在所述程序运行 时控制所述计算机可读存储介质所在设备执行上述第一方面任一所述的方法。
上述技术方案,在设备对进程进行回收的同时,通过对内存空闲状态信 息的判断,可以选择多个进程进行回收,解决了因为未考虑空闲内存类型, 或是只单单回收一个进程而出现回收不积极的问题。并且在回收进程的同时, 对一些重要进程进行保留,以避免对其进行错误回收。
【附图说明】
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要 使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的 一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下, 还可以根据这些附图获得其它的附图。
图1为本发明实施例提供的一种电子设备的结构示意图;
图2为本发明实施例提供的一种内存回收方法的流程图;
图3为本发明实施例提供的一种内存回收装置的结构示意图;
图4为本发明实施例提供的另一种电子设备的结构示意图。
【具体实施方式】
为了更好的理解本发明的技术方案,下面结合附图对本发明实施例进行详 细描述。
应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实 施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提 下所获得的所有其它实施例,都属于本发明保护的范围。
当电子设备遇到空闲内存不足的情况时,一般会通过PSI事件触发的LMKD 机制来进行内存回收。其中为了实现内存回收,本发明实施例提供了一种电子设 备的结构图。如图1所示,所述电子设备内设置有处理单元。处理单元用来确认 内存空闲状态信息,并根据所述内存空闲状态信息对选定的进程进行回收以确 保电子设备有足够的内存保持运行。
具体的,当处理单元接收到PSI事件时,会触发内存开始执行回收进程。 在执行内存回收进程的过程中,处理单元会获取内存空闲状态信息,并根据所述 内存空闲状态信息确定需要回收进程的个数。
具体的,内存状态信息可以具体表示当前内存的压力需求。所述内存空闲 状态信息具体包括:剩余空闲内存总值、highatomic类型的空闲内存占比、上层 应用的内存需求信息、交换空间空闲占比、进程等待硬件资源时间以及进程 oom_adj值。
剩余内存空闲总值用来表示电子设备内部内存剩余总量。一般通过水位线watermark来衡量当前系统的剩余空闲内存压力情况。而水位线watermark又具 体分为high、low、min三个层级。当剩余内存在high以上时,系统认为当前内 存使用压力不大;当剩余内存降低到low时,系统就会认为当前内存已经不足 了,并开始进行进程回收;当剩余内存在min以下时,则系统内存压力非常大。 本发明实施例所述水位线watermark一般为low层级的水位线watermark。因此 通过所述水位线watermark来表示设备内部剩余内存空闲总值的压力状况,并进 一步表示备内部实时的内存压力状况。
highatomic类型的空闲内存占比,指全部内存中highatomic类型内存的空 闲状态。终端内部内存通常分为movable,unmovable,reclaimable,highatomic 四种类型的内存,并通过movable类型内存来运行设备内部的进程。当其他类型 内存如highatomic内存空闲占比过高时,会占据一部分用来运行进程的movable 类型内存,导致设备运行卡顿。因此通过所述highatomic类型的空闲内存占比 来表示设备内部实时的内存压力状况。
上层应用的内存需求信息,上层应用在启动时会往往会需要大量内存空间, 此时上层应用会向处理单元发送所述内存需求信息,用以回收内存中的部分进 程以流出足够的剩余内存空间供上层应用启动。
交换空间空闲占比,交换空间是为了解决真实物理内存不足的问题而利用 磁盘空间虚拟出的一块逻辑内存。用于将内存中暂时不常用的数据临时存放到 虚拟空间中一遍流出物理内存空间,当需要用到这些数据时,会重新将其从虚拟 空间读入物理内存当中。交换空间同样可以用来表征当前内存的压力状况。
进程等待硬件资源时间,即所述PSI事件。PSI事件具体量化了由于硬件资 源紧张造成的任务执行中断,统计了系统中任务等待硬件资源的时间。因此可以 通过PSI作为指标来衡量硬件资源压力的情况。进程等待硬件资源时间越长,资 源面临的压力越大,内存压力也就越大。当进程等待硬件资源时间达到700ms 时,PSI上报的事件即为critical事件。
进程的oom_adj值用来判断进程的重要程度,oom_adj值越高,进程就越 不重要。当触发LMKD机制后,处理单元会优先回收oom_adj值更高的进程。
处理单元根据上述内存空闲状态信息确定当前终端内存压力是否大于设定 值。具体的,当内存空闲状态信息满足以下组合:所述剩余空闲内存总值小于内 存水位watermark;highatomic类型的空闲内存占比大于第一阈值;指定应用发 送内存需求信息;交换空间空闲占比小于指定值;进程等待硬件资源时间大于第 二阈值;oom_adj值大于预设数值的进程个数大于第三阈值,中的一项或多项组 合时,确定内存压力需求大于设定值。此时按照oom_adj值由大到小的顺序从 正在运行的进程中依次选取进程进行内存回收,直至所选取进程释放内存后 使空闲内存总值大于或者等于内存水位watermark,以满足当前内存需求空 间。
其中,在根据内存空闲状态信息组合确定当前终端内存压力是否大于设定 值时,如果交换空间空闲占比小于第三指定值且oom_adj值大于预设数值的进 程个数大于第四阈值,则从oom_adj值大于预设数值的进程中确定回收进程, 并并对所述回收进程执行内存回收。一般将预设数值设定为800,第四阈值设定 为0,即当交换空间空闲占比小于第三指定值且包含oom_adj值大于800的进程 时,则回收所有oom_adj值在800以上的进程以释放内存空间。如果当前终端 大于预设数值的进程个数不大于第四阈值,即当前终端内不含有800以上的进 程,则不对任何进程进行回收。
在一些实施例中,过度的进程回收会回收掉一些正在正常执行中的进程, 给用户造成不好的使用体验。因此在根据LMKD机制对进程进行回收的过程中, 还需要根据所述内存空闲状态信息对部分重要进程进行保留。例如根据页面抖 动值和剩余内存空闲总值对部分进程进行保留。
具体的,根据所述页面抖动值确定oom_adj保留阈值,其中,所述页面抖 动值与所述oom_adj保留阈值呈负相关关系,所述页面抖动值越大所述oom_adj 保留阈值越小,所述页面抖动值越小所述oom_adj保留阈值越大。
将oom_adj值小于所述oom_adj保留阈值的进程确定为保留进程,所述保 留进程不执行内存回收;从oom_adj值大于或者等于所述oom_adj保留阈值的 进程中确定回收进程并对所述回收进程执行内存回收。
一般的,将oom_adj值保留阈值设置为900、701、201、100,根据用户需 要,还可以将oom_adj值保留阈值范围进行进一步划分。并根据具体页面抖动 值,确定进程保留范围。
同时还会根据剩余内存空闲总值对部分进程进行保留。如果所述剩余空闲 内存总值大于内存水位watermark,则将oom_adj值为0的进程确定为保留进程, 所述保留进程不执行内存回收;从oom_adj值不为0的进程中确定回收进程并 对所述回收进程执行内存回收。其中oom_adj值为0的进程为当前终端前台正 在运行的进程,将所述前台进程进行保留以避免用户操作时出现闪退等情况。
基于图1所示的电子设备结构,本发明实施例提供了一种内存回收方法。 参见图2,为本发明实施例提供的一种内存回收方法的流程图。该方法的执行主 体为处理单元101,所述方法的执行步骤包括:
201,接收到内存压力阻塞信息PSI事件时,触发内存回收进程。
202,在所述内存回收进程中,获取内存空闲状态信息。
具体地,所述内存空闲状态信息用来表示当前电子设备内存压力需求,包 括:剩余空闲内存总值、highatomic类型的空闲内存占比、上层应用的内存需求 信息、交换空间空闲占比、进程等待硬件资源时间以及进程oom_adj值。
203,根据所述内存空闲状态信息确定内存压力需求是否大于设定值。
具体地,如果所述内存空闲状态信息满足以下中的一项或多项的组合,则 确定内存压力需求大于设定值,其中包括:
所述剩余空闲内存总值小于内存水位watermark;highatomic类型的空闲内 存占比大于第一阈值;指定应用发送内存需求信息;交换空间空闲占比小于指定 值;进程等待硬件资源时间大于第二阈值;oom_adj值大于预设数值的进程个数 大于第三阈值。以及满足交换空间空闲占比小于第一指定值且进程等待硬件资 源时间大于第二阈值;或者,交换空间空闲占比小于第二指定值且oom_adj值 大于预设数值的进程个数大于第三阈值的组合时,则确定当前终端内存压力需 求大于设定值,否则确定当前终端内存压力小于设定值。
在一些具体实施例中,可能会出现满足内存空闲状态信息中的一项,例如: 内存空闲状态信息中会出现highatomic类型的空闲内存占比大于75%,压缩了 用于运行进程的movable类型内存的情况。执行步骤206。
在一些具体实施例中,可能会出现满足内存空闲状态信息中的一项,例如: 内存空闲状态信息中出现指定应用如相机、微信等电子设备内部常见应用发送 内存需求信息的情况时,确定内存需求的设定数值。执行步骤204。
在一些具体实施例中,可能会出现满足内存空闲状态信息多项的组合,例 如:交换空间空闲占比小于第一指定值且进程等待硬件资源时间大于700ms,即 上报critical事件;或者交换空间空闲占比小于第二指定值且oom_adj值大于800 的进程个数大于0个时,确定内存压力需求大于设定值。执行步骤204。
在一些具体实施例中,可能会出现仅满足内存空闲状态信息多项的组合中 的部分条件,例如:仅满足交换空间空闲占比小于第一指定值时,确定内存压力 需求小于设定值。执行步骤206。
204,确定需要回收的进程个数为多个。
具体的,当内存空闲状态信息满足一项或多项的组合时,确定内存压力需 求大于设定值。此时确定需要回收的进程个数为多个。
205,根据进程oom_adj值,从正在运行的进程中选取多个进程进行内存回 收。
具体的,按照oom_adj值由大到小的顺序从正在运行的进程中依次选取进 程进行内存回收,直至所选取进程释放内存后使空闲内存总值大于内存需求的 设定数值;或者选定的oom_adj阈值以上的进程被回收完为止。
在一些实施例中,当满足内存空闲状态信息多项的组合为:交换空间空闲 占比小于第二指定值且oom_adj值大于预设数值的进程个数大于第三阈值;或 者,交换空间空闲占比小于第三指定值且oom_adj值大于预设数值的进程个数 大于第四阈值时,则从oom_adj值大于预设数值的进程中确定回收进程,并对 所述回收进程执行内存回收。其中,一般将预设数值设为800,第三阈值和第四 阈值设为0。即当满足上述条件时,将设备内部oom_adj值大于800的进程全部 回收,如果不满足上述条件则不进行任何处理。
206,确定需要回收的进程个数为一个。
具体的,当内存空闲状态信息仅满足内存空闲状态信息多项的组合中的部 分条件时,确定内存压力需求小于设定值。此时确定需要回收的进程个数为1个。
207,根据进程oom_adj值,选择当前oom_adj值最大的进程进行回收。
上述技术方案中,在设备对进程进行回收的同时,通过对内存空闲状态信 息的判断,可以选择多个进程进行回收,解决了因为未考虑空闲内存类型,或是 只单单回收一个进程而出现回收不积极的问题。
在一些实施例中,LMKD机制对进程回收的过于积极会导致错误回收一些 正常运行的应用,为避免这种情况的发生,本发明实施例还提供了进程保留方法, 以实现在进程回收的过程中对一些重要进程进行保护。
在一些实施例中,内存空闲状态信息会出现页面抖动值相关的情况,此时需 要根据具体的页面抖动值与终端内部进程的oom_adj值对部分进程进行保留。
具体的,根据所述页面抖动值,确定oom_adj保留阈值,其中,所述页面抖 动值与所述oom_adj保留阈值呈负相关关系,所述页面抖动值越大所述oom_adj 保留阈值越小,所述页面抖动值越小所述oom_adj保留阈值越大。
将oom_adj值小于所述oom_adj保留阈值的进程确定为保留进程,所述保 留进程不执行内存回收;从oom_adj值大于或者等于所述oom_adj保留阈值的 进程中确定回收进程并对所述回收进程执行内存回收。
一般的,将oom_adj值保留阈值设置为900、701、201、100,根据用户需 要,还可以将oom_adj值保留阈值范围进行进一步划分。并根据具体页面抖动 值,确定进程保留范围。
在一些实施例中,内存空闲状态信息会出现剩余空闲内存总值大于内存水 位watermark的情况,此时将oom_adj值为0的进程确定为保留进程,所述保留 进程不执行内存回收;并从oom_adj值不为0的进程中确定回收进程并对所述 回收进程执行内存回收。
通过上述方法,在终端对内部进程进行回收时,会保留住一些重要进程防止 其被处理单元错误回收,从而避免用户在使用终端时出现的进程闪退的情况。
对应上述内存回收方法,本发明实施例还提供了一种内存回收装置。参见图 3,所述内存回收装置可以包括:触发模块301、获取模块302、确定模块303、 回收模块304。
触发模块301,接收到内存压力阻塞信息PSI事件时,触发内存回收进程;
获取模块302,在所述内存回收进程中,获取内存空闲状态信息;
确定模块303,如果根据所述内存空闲状态信息确定内存压力需求大于设定 值,则确定需要回收的进程个数为多个;
回收模块304,根据进程oom_adj值,从正在运行的进程中选取多个进程进 行内存回收。
图3所示实施例提供的内存回收装置可用于执行本说明书所示方法实施例 的技术方案,其实现原理和技术效果可以进一步参考方法实施例中的相关描述。
图4为本说明书电子设备一个实施例的结构示意图,如图4所示,上述电 子设备可以包括至少一个处理器;以及与上述处理单元通信连接的至少一个存 储器,其中:存储器存储有可被处理单元执行的程序指令,上述处理器调用上述 程序指令能够执行本实施例提供的内存回收方法。
其中,上述电子设备可以为能够与用户进行智能对话的设备,例如:云服务 器,本说明书实施例对上述电子设备的具体形式不作限定。可以理解的是,这里 的电子设备即为方法实施例中提到的机器。
图4示出了适于用来实现本说明书实施方式的示例性电子设备的框图。图4 显示的电子设备仅仅是一个示例,不应对本说明书实施例的功能和使用范围带 来任何限制。
如图4所示,电子设备以通用计算设备的形式表现。电子设备的组件可以 包括但不限于:一个或者多个处理器410,存储器430,连接不同系统组件(包 括存储器410和处理单元410)的通信总线440。
通信总线440表示几类总线结构中的一种或多种,包括存储器总线或者存 储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意 总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构 (Industry StandardArchitecture;以下简称:ISA)总线,微通道体系结构(Micro Channel Architecture;以下简称:MAC)总线,增强型ISA总线、视频电子标准 协会(Video Electronics StandardsAssociation;以下简称:VESA)局域总线以及 外围组件互连(Peripheral ComponentInterconnection;以下简称:PCI)总线。
电子设备典型地包括多种计算机系统可读介质。这些介质可以是任何能够 被电子设备访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动 的介质。
存储器430可以包括易失性存储器形式的计算机系统可读介质,例如随机 存取存储器(Random Access Memory;以下简称:RAM)和/或高速缓存存储器。 电子设备可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统 存储介质。存储器430可以包括至少一个程序产品,该程序产品具有一组(例如 至少一个)程序模块,这些程序模块被配置以执行本说明书各实施例的功能。
具有一组(至少一个)程序模块的程序/实用工具,可以存储在存储器430 中,这样的程序模块包括——但不限于——操作系统、一个或者多个应用程序、 其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络 环境的实现。程序模块通常执行本说明书所描述的实施例中的功能和/或方法。
处理器410通过运行存储在存储器430中的程序,从而执行各种功能应用 以及数据处理,例如实现本说明书所示实施例提供的内存回收方法。
本说明书实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机 可读存储介质存储计算机指令,所述计算机指令使所述计算机执行本说明书所 示实施例提供的内存回收方法。
上述非暂态计算机可读存储介质可以采用一个或多个计算机可读的介质的 任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介 质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外 线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质 的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式 计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(Read Only Memory; 以下简称:ROM)、可擦式可编程只读存储器(ErasableProgrammable Read Only Memory;以下简称:EPROM)或闪存、光纤、便携式紧凑磁盘只读存储器(CD- ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中, 计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指 令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据 信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形 式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机 可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该 计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使 用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括—— 但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本说明书操作的 计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、 Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的 程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机 上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上 执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远 程计算机可以通过任意种类的网络——包括局域网(Local Area Network;以下 简称:LAN)或广域网(Wide Area Network;以下简称:WAN)连接到用户计 算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网 连接)。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的 范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施 例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不 一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式 中,多任务处理和并行处理也是可以的或者可能是有利的。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相 对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二” 的特征可以明示或者隐含地包括至少一个该特征。在本说明书的描述中,“多个” 的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表 示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码 的模块、片段或部分,并且本说明书的优选实施方式的范围包括另外的实现,其 中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或 按相反的顺序,来执行功能,这应被本说明书的实施例所属技术领域的技术人员 所理解。
取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或 “当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语 “如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时” 或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述 的条件或事件)”。
需要说明的是,本说明书实施例中所涉及的终端可以包括但不限于个人计 算机(Personal Computer;以下简称:PC)、个人数字助理(Personal Digital Assistant; 以下简称:PDA)、无线手持设备、平板电脑(Tablet Computer)、手机、MP3播 放器、MP4播放器等。
在本说明书所提供的实施例中,应该理解到,所揭露的系统、装置和方法, 可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例 如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分 方式,例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征 可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通 信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性, 机械或其它的形式。
另外,在本说明书各个实施例中的各功能单元可以集成在一个处理单元中, 也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元 中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单 元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可 读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以 使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)或处理器 (Processor)执行本说明书各个实施例所述方法的部分步骤。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本 说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本 说明书保护的范围之内。

Claims (10)

1.一种内存回收方法,其特征在于,包括:
接收到内存压力阻塞信息PSI事件时,触发内存回收进程;
在所述内存回收进程中,获取内存空闲状态信息;
如果根据所述内存空闲状态信息确定内存压力需求大于设定值,则确定需要回收的进程个数为多个;
根据进程oom_adj值,从正在运行的进程中选取多个进程进行内存回收。
2.根据权利要求1所述的方法,其特征在于,所述内存空闲状态信息,包括:剩余空闲内存总值、highatomic类型的空闲内存占比、上层应用的内存需求信息、交换空间空闲占比、进程等待硬件资源时间以及进程oom_adj值;如果所述内存空闲状态信息满足以下中的一项或多项的组合,则确定内存压力需求大于设定值,其中包括:
所述剩余空闲内存总值小于内存水位watermark;
highatomic类型的空闲内存占比大于第一阈值;
指定应用发送内存需求信息;
交换空间空闲占比小于指定值;
进程等待硬件资源时间大于第二阈值;
oom_adj值大于预设数值的进程个数大于第三阈值。
3.根据权利要求2所述的方法,其特征在于,如果所述内存空闲状态信息满足以下组合,则确定内存压力需求大于设定值,包括:
交换空间空闲占比小于第一指定值且进程等待硬件资源时间大于第二阈值;或者,
交换空间空闲占比小于第二指定值且oom_adj值大于预设数值的进程个数大于第三阈值。
4.根据权利要求1所述的方法,其特征在于,根据进程oom_adj值,从正在运行的进程中选取多个进程进行内存回收,包括:
按照oom_adj值由大到小的顺序从正在运行的进程中依次选取进程进行内存回收,直至所选取进程释放内存后使空闲内存总值大于或者等于内存水位watermark。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述内存空闲状态信息包括:交换空间空闲占比;根据进程oom_adj值,从正在运行的进程中选取多个进程进行内存回收,包括:
如果交换空间空闲占比小于第三指定值且oom_adj值大于预设数值的进程个数大于第四阈值,则从oom_adj值大于预设数值的进程中确定回收进程,并并对所述回收进程执行内存回收。
6.根据权利要求1至4任一项所述的方法,其特征在于,所述内存空闲状态信息还包括页面抖动值;根据进程oom_adj值,从正在运行的进程中选取多个进程进行内存回收,包括:
根据所述页面抖动值,确定oom_adj保留阈值,其中,所述页面抖动值与所述oom_adj保留阈值呈负相关关系,所述页面抖动值越大所述oom_adj保留阈值越小,所述页面抖动值越小所述oom_adj保留阈值越大;
将oom_adj值小于所述oom_adj保留阈值的进程确定为保留进程,所述保留进程不执行内存回收;
从oom_adj值大于或者等于所述oom_adj保留阈值的进程中确定回收进程并对所述回收进程执行内存回收。
7.根据权利要求1所述的方法,其特征在于,所述内存空闲状态信息还包括剩余空闲内存总值;根据进程oom_adj值,从正在运行的进程中选取多个进程进行内存回收,包括:
如果所述剩余空闲内存总值大于内存水位watermark,则将oom_adj值为0的进程确定为保留进程,所述保留进程不执行内存回收;
从oom_adj值不为0的进程中确定回收进程并对所述回收进程执行内存回收。
8.一种内存回收装置,其特征在于,包括:
触发模块,接收到内存压力阻塞信息PSI事件时,触发内存回收进程;
获取模块,在所述内存回收进程中,获取内存空闲状态信息;
确定模块,如果根据所述内存空闲状态信息确定内存压力需求大于设定值,则确定需要回收的进程个数为多个;
回收模块,根据进程oom_adj值,从正在运行的进程中选取多个进程进行内存回收。
9.一种内存回收设备,其特征在于,包括:
至少一个处理器;以及
与所述处理器通信连接的至少一个存储器,其中:
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的程序,其中,在所述程序运行时控制所述计算机可读存储介质所在设备执行权利要求1至7任一所述的方法。
CN202111299272.2A 2021-11-04 2021-11-04 内存回收方法和装置 Pending CN114218126A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111299272.2A CN114218126A (zh) 2021-11-04 2021-11-04 内存回收方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111299272.2A CN114218126A (zh) 2021-11-04 2021-11-04 内存回收方法和装置

Publications (1)

Publication Number Publication Date
CN114218126A true CN114218126A (zh) 2022-03-22

Family

ID=80696488

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111299272.2A Pending CN114218126A (zh) 2021-11-04 2021-11-04 内存回收方法和装置

Country Status (1)

Country Link
CN (1) CN114218126A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116225976A (zh) * 2023-05-05 2023-06-06 麒麟软件有限公司 一种Linux操作系统下的水位线自调整方法及系统
CN118034937A (zh) * 2024-04-11 2024-05-14 麒麟软件有限公司 一种桌面Linux操作系统的智能OOM-Killer方法及系统

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116225976A (zh) * 2023-05-05 2023-06-06 麒麟软件有限公司 一种Linux操作系统下的水位线自调整方法及系统
CN116225976B (zh) * 2023-05-05 2023-08-08 麒麟软件有限公司 一种Linux操作系统下的水位线自调整方法及系统
CN118034937A (zh) * 2024-04-11 2024-05-14 麒麟软件有限公司 一种桌面Linux操作系统的智能OOM-Killer方法及系统
CN118034937B (zh) * 2024-04-11 2024-06-21 麒麟软件有限公司 一种桌面Linux操作系统的智能OOM-Killer方法及系统

Similar Documents

Publication Publication Date Title
CN111158910B (zh) 内存管理方法、装置、存储介质及电子设备
CN110888746B (zh) 内存管理方法、装置、存储介质及电子设备
CN110895492B (zh) 设备控制方法、装置、存储介质及电子设备
CN110764906B (zh) 内存回收处理方法、装置、电子设备以及存储介质
CN114218126A (zh) 内存回收方法和装置
CN111831440B (zh) 内存回收方法、装置、存储介质及电子设备
CN108132735B (zh) 终端与应用控制方法
CN104657380A (zh) 一种图片加载方法和装置
CN111274039B (zh) 内存回收方法、装置、存储介质及电子设备
US11360884B2 (en) Reserved memory in memory management system
CN111831441A (zh) 内存回收方法、装置、存储介质及电子设备
US20220035655A1 (en) Method and Device for Anonymous Page Management, Terminal Device, and Readable Storage Medium
CN111475299B (zh) 内存分配方法、装置、存储介质及电子设备
CN111552567B (zh) 一种线程管理方法、装置、电子设备及存储介质
CN116107922A (zh) 一种应用程序的管理方法及电子设备
CN115509953A (zh) 内存回收方法及其装置
CN115617504A (zh) 一种内存管理系统、泄露检测方法及存储介质
US20240152439A1 (en) Detection Method and Electronic Device
CN116166573B (zh) 控制内存回收的方法、电子设备及存储介质
CN108415779B (zh) 用于通过主机结构接口的队列管理的方法和装置
CN115658295A (zh) 资源调度方法、装置、电子设备和存储介质
CN111078405B (zh) 内存分配方法、装置、存储介质及电子设备
CN112463374A (zh) 一种内存管理方法、装置、设备及存储介质
CN116049025B (zh) 动态调整内存回收gc参数的方法、电子设备及存储介质
CN115729765A (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