内存回收方法、设备、存储介质和系统技术方案

技术编号:38027549 阅读:8 留言:0更新日期:2023-06-30 10:54
本发明专利技术提供一种内存回收方法、设备、存储介质和系统,该方法包括:回收线程响应于在第一时刻对目标内存空间触发的回收请求,对回收线程此时对应的第一版本号进行递增更新以得到第二版本号,确定第二版本号作为目标内存空间对应的版本号;响应于在第二时刻至少一个应用线程中目标应用线程执行完任务后触发的版本号获取请求,将回收线程此时对应的第三版本号发送至目标应用线程作为目标应用线程此时对应的版本号;若根据至少一个应用线程各自对应的版本号和目标内存空间对应的第二版本号,确定目标内存空间满足回收条件,则对目标内存空间进行回收处理。本方案可以降低回收内存时的性能开销。的性能开销。的性能开销。

【技术实现步骤摘要】
内存回收方法、设备、存储介质和系统


[0001]本专利技术涉及计算机
,尤其涉及一种内存回收方法、设备、存储介质和系统。

技术介绍

[0002]在诸如手机、笔记本电脑、服务器等电子设备中,一个应用程序被启动时会启动相应的进程,进程会申请自己独立的一块或多块内存空间,而且,进程可以启动多个线程(称为应用线程)来执行应用程序运行过程中所需执行的各个任务。在任务执行过程中,会存在多个线程访问同一块内存空间的情形。当这块内存空间不再被访问的时候,可以回收这块内存空间,以提高内存的利用率。
[0003]针对上述多个应用线程访问同一内存空间的情况,一般会采用智能指针维护内存空间的生命周期。具体实施时,每个应用线程每次访问该内存空间时,都需要对智能指针进行构建操作和析构操作,举例来说,在某个应用线程访问该内存空间时,先构造指向该内存空间的智能指针,并对智能指针中的原子计数器的数值执行加一操作,在访问内存空间完毕后,析构该智能指针,以对原子计数器的数值执行减一操作。其中,多个应用线程共用该原子计数器,待原子计数器减为零时,即可对该内存空间进行回收处理。而在此过程中,为了保证多个应用线程间的原子性需要使用原子操作,原子操作以及不断地构建、析构智能指针,性能消耗较大。

技术实现思路

[0004]本专利技术实施例提供一种内存回收方法、设备、存储介质和系统,用于降低回收内存时的性能开销。
[0005]第一方面,本专利技术实施例提供一种内存回收方法,应用于对至少一个应用线程共同访问的目标内存空间进行回收的回收线程,所述方法包括:
[0006]响应于在第一时刻对所述目标内存空间触发的回收请求,对所述回收线程此时对应的第一版本号进行递增更新以得到第二版本号;
[0007]确定所述第二版本号作为所述目标内存空间对应的版本号;
[0008]响应于在第二时刻所述至少一个应用线程中目标应用线程执行完任务后触发的版本号获取请求,将所述回收线程此时对应的第三版本号发送至所述目标应用线程作为所述目标应用线程此时对应的版本号,所述目标应用线程是所述至少一个应用线程中任一个;
[0009]若根据所述至少一个应用线程各自对应的版本号和所述目标内存空间对应的所述第二版本号,确定所述目标内存空间满足回收条件,则对所述目标内存空间进行回收处理。
[0010]第二方面,本专利技术实施例提供一种内存回收装置,应用于对至少一个应用线程共同访问的目标内存空间进行回收的回收线程,所述装置包括:
[0011]确定模块,用于响应于在第一时刻对所述目标内存空间触发的回收请求,对所述回收线程此时对应的第一版本号进行递增更新以得到第二版本号;以及,确定所述第二版本号作为所述目标内存空间对应的版本号;
[0012]发送模块,用于响应于在第二时刻所述至少一个应用线程中目标应用线程执行完任务后触发的版本号获取请求,将所述回收线程此时对应的第三版本号发送至所述目标应用线程作为所述目标应用线程此时对应的版本号,所述目标应用线程是所述至少一个应用线程中任一个;
[0013]回收模块,用于若根据所述至少一个应用线程各自对应的版本号和所述目标内存空间对应的所述第二版本号,确定所述目标内存空间满足回收条件,则对所述目标内存空间进行回收处理。
[0014]第三方面,本专利技术实施例提供一种电子设备,包括:存储器、处理器、通信接口;其中,所述存储器上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如第一方面所述的内存回收方法。
[0015]第四方面,本专利技术实施例提供一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如第一方面所述的内存回收方法。
[0016]第五方面,本专利技术实施例提供一种内存回收方法,应用于共同访问目标内存空间的至少一个应用线程中的目标应用线程,所述方法包括:
[0017]在第一时刻向回收线程触发对所述目标内存空间的回收请求,以使所述回收线程对所述回收线程此时对应的第一版本号进行递增更新以得到第二版本号,并确定所述第二版本号作为所述目标内存空间对应的版本号,所述回收线程与所述至少一个应用线程对应;
[0018]在第二时刻执行完任务后向所述回收线程发送版本号获取请求,以使所述回收线程将此时对应的第三版本号发送至所述目标应用线程作为所述目标应用线程此时对应的版本号,所述目标应用线程是所述至少一个应用线程中任一个;其中,所述至少一个应用线程各自对应的版本号和所述目标内存空间对应的所述第二版本号,用于使得所述回收线程在确定所述目标内存空间满足回收条件时对所述目标内存空间进行回收处理。
[0019]第六方面,本专利技术实施例提供一种内存回收装置,应用于共同访问目标内存空间的至少一个应用线程中的目标应用线程,所述装置包括:
[0020]发送模块,用于在第一时刻向回收线程触发对所述目标内存空间的回收请求,以使所述回收线程对所述回收线程此时对应的第一版本号进行递增更新以得到第二版本号,并确定所述第二版本号作为所述目标内存空间对应的版本号,所述回收线程与所述至少一个应用线程对应;
[0021]所述发送模块,还用于在第二时刻执行完任务后向所述回收线程发送版本号获取请求,以使所述回收线程将此时对应的第三版本号发送至所述目标应用线程作为所述目标应用线程此时对应的版本号,所述目标应用线程是所述至少一个应用线程中任一个;
[0022]确定模块,用于确定所述第三版本号作为所述目标应用线程此时对应的版本号;
[0023]其中,所述至少一个应用线程各自对应的版本号和所述目标内存空间对应的所述第二版本号,用于使得所述回收线程在确定所述目标内存空间满足回收条件时对所述目标
内存空间进行回收处理。
[0024]第七方面,本专利技术实施例提供一种电子设备,包括:存储器、处理器、通信接口;其中,所述存储器上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如第五方面所述的内存回收方法。
[0025]第八方面,本专利技术实施例提供一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如第五方面所述的内存回收方法。
[0026]第九方面,本专利技术实施例提供一种内存回收系统,所述内存回收系统包括:共同访问目标内存空间的至少一个应用线程,以及与所述至少一个应用程序对应的回收线程;
[0027]所述至少一个应用线程中第一应用线程,用于在第一时刻向所述回收线程触发对所述目标内存空间的回收请求;
[0028]所述至少一个应用线程中第二应用线程,用于在第二时刻执行完任务后向所述回收线程发送版本号获取请求,所述第二应用线程是所述至少一个应用线程中任一个;
[0029]所述回收线程,用于响应于所述回收请求,对所述回收线程此时对应的第一版本号进行递增更新以得到第二版本号,并确定所述第二版本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种内存回收方法,其特征在于,应用于对至少一个应用线程共同访问的目标内存空间进行回收的回收线程,所述方法包括:响应于在第一时刻对所述目标内存空间触发的回收请求,对所述回收线程此时对应的第一版本号进行递增更新以得到第二版本号;确定所述第二版本号作为所述目标内存空间对应的版本号;响应于在第二时刻所述至少一个应用线程中目标应用线程执行完任务后触发的版本号获取请求,将所述回收线程此时对应的第三版本号发送至所述目标应用线程作为所述目标应用线程此时对应的版本号,所述目标应用线程是所述至少一个应用线程中任一个;若根据所述至少一个应用线程各自对应的版本号和所述目标内存空间对应的所述第二版本号,确定所述目标内存空间满足回收条件,则对所述目标内存空间进行回收处理。2.根据权利要求1所述的方法,其特征在于,所述若根据所述至少一个应用线程各自对应的版本号和所述目标内存空间对应的所述第二版本号,确定所述目标内存空间满足回收条件,则对所述目标内存空间进行回收处理,包括:若确定所述至少一个应用线程各自对应的版本号均大于所述目标内存空间对应的所述第二版本号,则对所述目标内存空间进行回收处理。3.根据权利要求1所述的方法,其特征在于,所述若根据所述至少一个应用线程各自对应的版本号和所述目标内存空间对应的所述第二版本号,确定所述目标内存空间满足回收条件,则对所述目标内存空间进行回收处理,包括:获取所述至少一个应用线程各自对应的活跃状态信息;若根据所述活跃状态信息确定所述至少一个应用线程中存在处于不活跃状态的应用线程,则在根据除所述处于不活跃状态的应用线程外的其他应用线程各自对应的版本号和所述目标内存空间对应的所述第二版本号确定所述目标内存空间满足回收条件时,对所述目标内存空间进行回收处理。4.根据权利要求1所述的方法,其特征在于,所述方法还包括:若根据所述至少一个应用线程各自对应的版本号和所述目标内存空间对应的所述第二版本号,确定所述目标内存空间不满足回收条件,则对所述回收线程对应的所述第三版本号进行递增更新以得到第四版本号。5.根据权利要求4所述的方法,其特征在于,所述方法还包括:响应于在第三时刻所述目标应用线程执行完任务后触发的版本号获取请求,将所述回收线程此时对应的所述第四版本号发送至所述目标应用线程作为所述目标应用线程此时对应的版本号。6.根据权利要求4所述的方法,其特征在于,所述响应于在第一时刻对所述目标内存空间触发的回收请求,对所述回收线程此时对应的第一版本号进行递增更新以得到第二版本号,包括:响应于在第一时刻将所述目标内存空间的地址信息写入第一队列而触发的回收请求,从所述第一队列获取所述目标内存空间的地址信息,对所述回收线程此时对应的第一版本号进行递增更新以得到第二版本号;所述若根据所述至少一个应用线程各自对应的版本号和所述目标内存空间对应的所述第二版本号,确定所述目标内存空间不满足回收条件之后,所述方法还包括:
将所述目标内存空间的地址信息写入用于存储等待进行回收的内存空间的第二队列,将所述目标内存空间的地址信息从所述第一队列中删除。7.根据权利要求6所述的方法,其特征在于,所述方法还包括:在接收到回...

【专利技术属性】
技术研发人员:韩运启孙相征游亮
申请(专利权)人:阿里巴巴中国有限公司
类型:发明
国别省市:

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

1