缓存对象的处理方法技术

技术编号:39571682 阅读:8 留言:0更新日期:2023-12-03 19:22
本申请公开了一种缓存对象的处理方法

【技术实现步骤摘要】
缓存对象的处理方法、装置、设备及存储介质


[0001]本申请实施例涉及计算机
,特别涉及一种缓存对象的处理方法

装置

设备及存储介质


技术介绍

[0002]缓存淘汰策略是指在缓存中的缓存对象(如数据

资源等)的数量达到一定阈值时,根据一定的规则删除部分缓存对象,以保持缓存的容量和性能的策略,其在缓存管理中扮演着重要角色

[0003]以
CDN

Content Delivery Network
,内容分发网络)图(储存在
CDN
的图像)缓存为例,相关技术采用先加载先淘汰的缓存淘汰策略进行缓存管理

例如,相关技术使用一个最大可缓存
10
张图的列表作为缓存容器,若新加载的
CDN
图在缓存(即缓存容器)中不存在,则加载新的
CDN
图到缓存中,在缓存中的图超出
10
张的情况下,则淘汰掉缓存中最早加载的1张图

[0004]然而,不同分辨率的图所占用的内存差异极大,以图的数量对缓存的容量进行限制,会导致缓存的总占用内存波动较大


技术实现思路

[0005]本申请实施例提供了一种缓存对象的处理方法

装置

设备及存储介质,能够实现缓存的总占用内存的可控,从而提高缓存的总占用内存的稳定性

所述技术方案包括如下内容

[0006]根据本申请实施例的一个方面,提供了一种缓存对象的处理方法,所述方法包括:获取待缓存对象的占用内存,所述占用内存用于指示所述待缓存对象所需占用的内存;在所述占用内存小于或等于缓存容器对应的内存阈值的情况下,将所述待缓存对象缓存至所述缓存容器,获取所述缓存容器的总占用内存;其中,所述总占用内存是指所述缓存容器中未被释放引用数据的已缓存对象的占用内存的和值,所述引用数据用于引用所述已缓存对象;在所述总占用内存大于所述内存阈值的情况下,对位于所述缓存容器对应的访问顺序列表的尾部的引用数据进行释放,获取所述缓存容器的更新后总占用内存,所述访问顺序列表用于基于所述引用数据记录所述已缓存对象的访问顺序;在所述更新后总占用内存小于或等于所述内存阈值的情况下,停止释放所述引用数据

[0007]根据本申请实施例的一个方面,提供了一种缓存对象的处理装置,所述装置包括:占用内存获取模块,用于获取待缓存对象的占用内存,所述占用内存用于指示所述待缓存对象所需占用的内存;总内存获取模块,用于在所述占用内存小于或等于缓存容器对应的内存阈值的情
况下,将所述待缓存对象缓存至所述缓存容器,获取所述缓存容器的总占用内存;其中,所述总占用内存是指所述缓存容器中未被释放引用数据的已缓存对象的占用内存的和值,所述引用数据用于引用所述已缓存对象;引用数据释放模块,用于在所述总占用内存大于所述内存阈值的情况下,对位于所述缓存容器对应的访问顺序列表的尾部的引用数据进行释放,获取所述缓存容器的更新后总占用内存,所述访问顺序列表用于基于所述引用数据记录所述已缓存对象的访问顺序;所述引用数据释放模块,还用于在所述更新后总占用内存小于或等于所述内存阈值的情况下,停止释放所述引用数据

[0008]根据本申请实施例的一个方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有计算机程序,所述计算机程序由所述处理器加载并执行以实现上述缓存对象的处理方法

[0009]根据本申请实施例的一个方面,提供了一种计算机可读存储介质,所述可读存储介质中存储有计算机程序,所述计算机程序由处理器加载并执行以实现上述缓存对象的处理方法

[0010]根据本申请实施例的一个方面,提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中

计算机设备的处理器从计算机可读存储介质读取该计算机程序,处理器执行该计算机程序,使得该计算机设备执行上述缓存对象的处理方法

[0011]本申请实施例提供的技术方案可以包括如下有益效果

[0012]通过在缓存容器的总占用内存超出内存限制的情况下,将已缓存对象的引用数据进行释放,从而降低缓存容器的总占用内存,实现了以占用内存为单位对缓存容器进行限制,解决了以缓存对象的数量对缓存容器进行限制时占用内存不可控的问题,本申请以占用内存为单位能准确地对缓存容器的总占用内存进行管控,从而有利于提高缓存容器的总占用内存的稳定性

附图说明
[0013]为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图

[0014]图1是本申请一个实施例提供的方案实施环境的示意图;图2是本申请一个实施例提供的缓存对象的处理方法的流程图;图3是本申请一个实施例提供的游戏活动界面的示意图;图4是本申请一个实施例提供的访问顺序列表的示意图;图5至图9是本申请一个实施例提供的访问顺序列表变更的示意图;图
10
是本申请一个实施例提供的被释放的引用数据被添加进弱引用池的示意图;图
11
是本申请一个实施例提供的引用数据从弱引用池中被恢复至访问顺序列表的示意图;

12
是本申请另一个实施例提供的缓存对象的处理方法的流程图;图
13
是本申请再一个实施例提供的缓存对象的处理方法的流程图;图
14
是本申请一个实施例提供的相关技术下缓存容器的总占用内存的变化示意图;图
15
是本申请一个实施例提供的本申请实施例下缓存容器的总占用内存的变化示意图;图
16
是本申请一个实施例提供的缓存对象的处理装置的框图;图
17
是本申请另一个实施例提供的缓存对象的处理装置的框图;图
18
是本申请一个实施例提供的计算机设备的框图

具体实施方式
[0015]在对本申请实施例进行介绍说明之前,首先对本申请中涉及的相关名词进行解释说明

[0016]1、CDN

Content Delivery Network
,内容分发网络):其是一种用于加速网络内容传输的服务技术

在游戏开发场景中,
CDN
常被用于存放用户需要实时下载的资源内容

[0017]2、
引擎内资源:其是指开发期间(如游戏开发)便导入到引擎工程内的资源,引擎内资源可通过引擎构建,其被运行时可通过引擎的资源管理框架进行加载本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种缓存对象的处理方法,其特征在于,所述方法包括:获取待缓存对象的占用内存,所述占用内存用于指示所述待缓存对象所需占用的内存;在所述占用内存小于或等于缓存容器对应的内存阈值的情况下,将所述待缓存对象缓存至所述缓存容器,获取所述缓存容器的总占用内存;其中,所述总占用内存是指所述缓存容器中未被释放引用数据的已缓存对象的占用内存的和值,所述引用数据用于引用所述已缓存对象;在所述总占用内存大于所述内存阈值的情况下,对位于所述缓存容器对应的访问顺序列表的尾部的引用数据进行释放,获取所述缓存容器的更新后总占用内存,所述访问顺序列表用于基于所述引用数据记录所述已缓存对象的访问顺序;在所述更新后总占用内存小于或等于所述内存阈值的情况下,停止释放所述引用数据
。2.
根据权利要求1所述的方法,其特征在于,所述方法还包括:在所述更新后总占用内存大于所述内存阈值的情况下,继续对位于所述访问顺序列表的尾部的引用数据进行释放,直到所述缓存容器的更新后总占用内存小于或等于所述内存阈值
。3.
根据权利要求1所述的方法,其特征在于,所述方法还包括:将被释放的所述引用数据添加至弱引用池中;其中,所述弱引用池中的对象以弱引用方式被持有,所述弱引用方式下的引用数据对应的已缓存对象存在被回收的可能性,所述弱引用方式下的引用数据对应的已缓存对象具有访问性
。4.
根据权利要求3所述的方法,其特征在于,所述方法还包括:在所述弱引用池中的第一引用数据所对应的第一已缓存对象被引用的情况下,若所述第一已缓存对象未被回收,则将所述第一引用数据挪回所述访问顺序列表的头部
。5.
根据权利要求4所述的方法,其特征在于,所述方法还包括:若所述第一已缓存对象被回收,则释放所述第一已缓存对象在所述缓存容器中占用的内存,以及将所述第一引用数据进行删除
。6.
根...

【专利技术属性】
技术研发人员:苏志林
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:

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

1