当前位置: 首页 > news >正文

Unity关于Addressables.Release释放资源内存问题

在这里插入图片描述

前言

最近在编写基于Addressables的资源管理器,对于资源释放模块配合MemoryProfiler进行了测试,下面总结下测试Addressables.Release的结论。

总结

使用Addressables.Release释放资源时,通过MemoryProfiler检查内存信息发现加载的内容还在内存里面,经过一系列测试加上阅读文档和搜索资料后得出以下结论。

1.资源引用计数未清零。
每次通过Addressables加载资源会增加该资源引用计数,使用Addressables.Release可以减少计数,直到计数清零才会释放该资源。
2.Addressables.Release是异步操作。
因为我写的资源管理器是对加载资源进行缓存的,不会重复加载,但是调用Release内存中依然保留了该资源。原因是因为Addressables.Release是一个异步操作,即使释放了也不会马上清除内存,这时如果我们调用Resources.UnloadUnusedAssets()则会发现该资源的内存被清除。Resources.UnloadUnusedAssets()是个缓慢的操作,要注意使用时机。
那么如果我们不主动回收的话什么时候自动回收呢?以下列出会自动回收已释放资源内存的时机。
内存压力:当系统内存不足时,Unity 会尝试回收未使用的资源。
场景切换:加载新场景时,Unity 会清理上一个场景中未使用的资源。
低频率的自动回收:Unity 会定期检查并回收未使用的资源,但这个过程不是实时的。

http://www.lryc.cn/news/387864.html

相关文章:

  • 运算放大器(运放)带宽和带宽平坦度
  • npm常用命令使用与事件案例
  • Spring Boot中的定时任务调度
  • Hadoop3:MapReduce中的ETL(数据清洗)
  • python解锁图片相似度的神奇力量
  • TensorFlow 的原理与使用
  • [数据库]事务的隔离级别存储引擎
  • 使用nvm切换node版本时报错:exit status 1解决办法
  • Kafka~高吞吐量设计
  • STM32小项目———感应垃圾桶
  • 嵌入式MCU平台汇总
  • C#udpClient组播
  • 《昇思25天学习打卡营第14天 | 昇思MindSpore基于MindNLP+MusicGen生成自己的个性化音乐》
  • 新奥集团校招面试经验分享、测评笔试题型分析
  • 【推荐】Prometheus+Grafana企业级监控预警实战
  • 深度剖析:前端如何驾驭海量数据,实现流畅渲染的多种途径
  • AI时代,你的工作会被AI替代吗?
  • Java_日志
  • springcould-config git源情况下报错app仓库找不到
  • MySQL serverTimezone=UTC
  • 基于YOLOv9的PCB板缺陷检测
  • 高考结束,踏上西北的美食之旅
  • 人工智能 (AI) 在能源系统中应用的机会和风险
  • [AIGC] 定时删除日志文件
  • C++:typeid4种cast转换
  • vue3的配置和使用
  • 决策树划分属性依据
  • 短视频利器 ffmpeg (2)
  • 【计算机毕业设计】基于Springboot的智能物流管理系统【源码+lw+部署文档】
  • 【2024】LeetCode HOT 100——图论