内存回收方法、装置、电子设备及可读存储介质制造方法及图纸

技术编号:37105342 阅读:18 留言:0更新日期:2023-04-01 05:04
本申请适用于终端技术领域,提供了一种内存回收方法、装置、电子设备及可读存储介质。该内存回收方法,包括:响应于内存回收指令,回收注册在第一列表中的模块的内存,以及回收注册在第二列表中的模块的内存,其中,注册在第一列表中的模块的活跃指数小于第一阈值,注册在第二列表中的模块的活跃指数大于或等于第一阈值,活跃指数用于指示模块注册卸载的频繁程度。由于在第一列表中注册的模块注册卸载频率较低。在第二列表中注册的模块注册卸载频率较高。使得第一列表中的模块在回收内存时,发生写入/读取的概率降低,进而降低回收内存时发生阻塞的概率,有效提高低内存状态下系统的动态性能。态性能。态性能。

【技术实现步骤摘要】
内存回收方法、装置、电子设备及可读存储介质


[0001]本申请涉及终端领域,尤其涉及一种内存回收方法、装置、电子设备及可读存储介质。

技术介绍

[0002]切片(slab)机制是林纳斯(Linux)系统中的一种基于伙伴系统(buddy system)的内存分配机制。在伙伴系统中,通常是以4kB的页为单位对内存进行管理和分配。但是,实际应用时的内存需求大多以字节为单位。通过slab机制,可以以字节为单位,将伙伴系统中的一页内存进行分配和管理。
[0003]Linux内核(kernel)中,多个模块均会申请slab内存,在每个模块申请slab内存时,会在Linux内核中注册一个回收器(shrinker)。每个shrinker都会注册到一个全局链表(shrinker_list)上。当系统需要回收slab内存时,会遍历shrinker_list,依次访问各个模块注册的shrinker,回收各个模块的slab内存。
[0004]但是,由于shrinker_list在进行读写时都会通过shrinker读写信标(shrinker reader本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种内存回收方法,其特征在于,包括:响应于内存回收指令,回收注册在第一列表中的模块的内存,以及回收注册在第二列表中的模块的内存,其中,注册在所述第一列表中的模块的活跃指数小于第一阈值,注册在所述第二列表中的模块的活跃指数大于或等于第一阈值,所述活跃指数用于指示所述模块注册卸载的频繁程度。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:当模块注册时,获取注册的模块的活跃指数;当所述模块的活跃指数小于第一阈值时,将所述模块注册在所述第一列表中;当所述模块的活跃指数大于或等于第一阈值时,将所述模块注册在所述第二列表中。3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:当卸载所述第一列表或所述第二列表中注册的模块时,将卸载的模块的活跃指数加一。4.根据权利要求2或3所述的方法,其特征在于,每个所述模块对应一个shrinker,所述shrinker中包括所述模块对应的回收函数,所述回收函数用于在执行时回收所述模块的内存。5.根据权利要求4所述的方法,其特征在于,将所述模块注册在所述第一列表中,包括:将所述模块对应的所述shrinker注册在所述第一列表中。6.根据权利要求4或5所述的方法,其特征在于,将所述模块注册在所述第二列表中,包括:将所述模块对应的所述shrinker注册在所述第二列表中。7.根据权利要求4

6任一项所述的方法,其特征在于,卸载所述第一列表或所述第二列表中的模块,包括:将所述第一列表或所述第二列表中的模块对应的所述shrinker从所述第一列表或所述第二列表中卸载。8.根据权利要求4

6任一项所述的方法,其特征在于,当所述模块注册时,获取注册的模块的活跃指数,包括:获取注册的模块对应的所述shrinker中的回收函数;根据所述回收函数,在预先存储的全局数组中获取所述shrinker的活跃指数,所述预先存储的全局数组中包括多个回收函数,以及每个所述回收函数对应的shrinker的活跃指数;将所述shrinker的活跃指数作为所述模块的活跃指数。9.根据权利要求8所述的方法,其特征在于,所述根据所述回收函数,在预先存储的全局数组中获取所述shrinker的活跃指数,包括:根据所述回收函数,遍历所述预先存储的全局数组,查找与所述回收函数对应的shrinker的活跃指数;当查找到与所述回收函数对应的shrinker的活跃指数时,将所述shrinker的活跃指数作为所述模块的活跃指数;当未查找到与所述回收函数对应的shrinker的活跃指数时,将所述回收函数添加进所述预先存储的全局数组中,并将所述回收函数对应的shrinker的活跃指数设为预设数值,
将所述预设数值作为所述模块的活跃指数。10.根据权利要求4或7所述的方法,其特征在于,将卸载的所述模块的活跃指数加一,包括:获取卸载的模块对应的所述shrinker中的回收函数;根据所述回收函数,在预先存储的全局数组中将所述shrinker的活跃...

【专利技术属性】
技术研发人员:龚晨
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1