System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 内存回收方法、装置、电子设备及存储介质制造方法及图纸_技高网

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

技术编号:41205074 阅读:7 留言:0更新日期:2024-05-07 22:30
本申请公开了一种内存回收方法、装置、电子设备及存储介质,涉及计算机技术领域。该方法包括:若通过预设内存回收算法回收后的剩余内存值小于预设内存阈值,从后台运行的引用有预设类的对象的线程任务中,确定待处理的第一线程任务,所述预设内存回收算法用于对第二线程任务占用的内存进行回收,所述第二线程任务为后台运行的未引用有所述预设类的对象的线程任务;按照预设处理规则,对待处理的所述第一线程任务进行处理,得到处理后的所述第一线程任务,处理后的所述第一线程任务占用的内存能够被回收;回收处理后的所述第一线程任务所占用的内存。如此,将因内存泄露导致的内存释放掉,避免了内存溢出的发生。

【技术实现步骤摘要】

本申请涉及计算机,尤其涉及一种内存回收方法、装置、电子设备及存储介质


技术介绍

1、在相关技术中,一般是利用根搜索算法对计算机内存进行回收,该算法的基本思想就是选取一系列垃圾回收(garbage collection,gc)roots对象(object)作为起点,开始向下遍历搜索其他相关的对象,搜索所走过的路径成为引用链,遍历完成后,如果一个对象到gcroots对象没有任何引用链,则证明此对象是不可用的,可以被当作垃圾进行回收,以释放该对象所占用的堆内存。

2、但是,只要对象被gcroots对象绑定了,该对象则始终无法被回收,一直占有计算机中的堆内存,即堆内存一直释放不了,进而发生内存溢出(out of memory,oom)的问题。


技术实现思路

1、本申请提出了一种内存回收方法、装置、电子设备及存储介质,以避免内存溢出。

2、第一方面,本申请实施例提供了一种内存回收方法,所述方法包括:若通过预设内存回收算法回收后的剩余内存值小于预设内存阈值,从后台运行的引用有预设类的对象的线程任务中,确定待处理的第一线程任务,所述预设内存回收算法用于对第二线程任务占用的内存进行回收,所述第二线程任务为后台运行的未引用有所述预设类的对象的线程任务;按照预设处理规则,对待处理的所述第一线程任务进行处理,得到处理后的所述第一线程任务,处理后的所述第一线程任务占用的内存能够被回收;回收处理后的所述第一线程任务所占用的内存。

3、第二方面,本申请实施例提供了一种内存回收装置,所述装置包括:线程确定模块、线程处理模块和内存回收模块。线程确定模块,用于若通过预设内存回收算法回收后的剩余内存值小于预设内存阈值,从后台运行的引用有预设类的对象的线程任务中,确定待处理的第一线程任务,所述预设内存回收算法用于对第二线程任务占用的内存进行回收,所述第二线程任务为后台运行的未引用有所述预设类的对象的线程任务;线程处理模块,用于按照预设处理规则,对待处理的所述第一线程任务进行处理,得到处理后的所述第一线程任务,处理后的所述第一线程任务占用的内存能够被回收;内存回收模块,用于回收处理后的所述第一线程任务所占用的内存。

4、第三方面,本申请实施例提供了一种电子设备,包括:一个或多个处理器;存储器;一个或多个程序,其中所述一个或多个程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行上述的方法。

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

6、本申请提供的方案中,在将后台运行的未引用有预设类的对象的第二线程任务占用的内存进行回收后,若剩余内存值仍小于预设内存阈值,则按照预设处理规则,对引用有预设类的对象的第一线程任务进行处理,使得处理后的第一线程任务能被回收,然后再对处理后的第一线程任务所占的内存进行回收。可见,利用预设处理规则对第一线程任务进行处理后,再次进行内存回收,进一步释放了后台运行的线程任务所占用的内存;也就是说,将因内存泄露导致的内存释放掉,避免了内存溢出的发生,进而避免了因内存溢出导致前台运行的线程任务终止,而导致的前台运行的应用程序发生闪退等问题的发生。

本文档来自技高网...

【技术保护点】

1.一种内存回收方法,其特征在于,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述按照预设处理规则,对待处理的所述第一线程任务进行处理,得到处理后的所述第一线程任务,包括:

3.根据权利2所述的方法,其特征在于,所述回收修改类属性后的所述第一线程任务所占用的内存,包括:

4.根据权利要求3所述的方法,其特征在于,所述回收设置引用类型后的所述第一线程任务所占用的内存,包括:

5.根据权利要求1-4任一项所述的方法,其特征在于,所述若通过预设内存回收算法回收后的剩余内存值小于预设内存阈值,从后台运行的引用有预设类的对象的线程任务中,确定待处理的第一线程任务,包括:

6.根据权利要求5所述的方法,其特征在于,所述若回收所述第三线程任务所占的内存后的剩余内存值小于所述预设内存阈值,从后台运行的引用有预设类的对象的线程任务中,确定待处理的第一线程任务,包括:

7.根据权利要求1-4任一项所述的方法,其特征在于,所述从后台运行的引用有预设类的对象的线程任务中,确定待处理的第一线程任务,包括:

8.一种内存回收装置,其特征在于,所述装置包括:

9.一种电子设备,其特征在于,包括:

10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有程序代码,所述程序代码可被处理器调用执行如权利要求1至7任一项所述的方法。

...

【技术特征摘要】

1.一种内存回收方法,其特征在于,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述按照预设处理规则,对待处理的所述第一线程任务进行处理,得到处理后的所述第一线程任务,包括:

3.根据权利2所述的方法,其特征在于,所述回收修改类属性后的所述第一线程任务所占用的内存,包括:

4.根据权利要求3所述的方法,其特征在于,所述回收设置引用类型后的所述第一线程任务所占用的内存,包括:

5.根据权利要求1-4任一项所述的方法,其特征在于,所述若通过预设内存回收算法回收后的剩余内存值小于预设内存阈值,从后台运行的引用有预设类的对象的线程任务中,确定待处理的第一线程任务,包括...

【专利技术属性】
技术研发人员:韩国辉
申请(专利权)人:OPPO广东移动通信有限公司
类型:发明
国别省市:

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

1