首页 > 其他分享 >引擎模块自身占用

引擎模块自身占用

时间:2024-10-18 10:20:48浏览次数:6  
标签:文件 AssetBundle 占用 引擎 内存 模块 WebStream 加载

引擎自身中存在内存开销的部分纷繁复杂,可以说是由巨量的“微小”内存所累积起来的,比如GameObject及其各种Component(最大量的Component应该算是Transform了)、ParticleSystem、MonoScript以及各种各样的模块Manager(SceneManager、CanvasManager、PersistentManager等)…

一般情况下,上面所指出的引擎各组成部分的内存开销均比较小,真正占据较大内存开销的是这两处:WebStream 和 SerializedFile。其绝大部分的内存分配则是由AssetBundle加载资源所致。简单言之,当您使用new WWW或CreateFromMemory来加载AssetBundle时,Unity引擎会加载原始数据到内存中并对其进行解压,而WebStream的大小则是AssetBundle原始文件大小 + 解压后的数据大小 + DecompressionBuffer(0.5MB)。同时,由于Unity 5.3版本之前的AssetBundle文件为LZMA压缩,其压缩比类似于Zip(20%-25%),所以对于一个1MB的原始AssetBundle文件,其加载后WebStream的大小则可能是5~6MB,因此,当项目中存在通过new WWW加载多个AssetBundle文件,且AssetBundle又无法及时释放时,WebStream的内存可能会很大,这是研发团队需要时刻关注的。

对于SerializedFile,则是当你使用LoadFromCacheOrDownload、CreateFromFile或new WWW本地AssetBundle文件时产生的序列化文件。

对于WebStream和SerializedFile,你需要关注以下两点:

  • 是否存在AssetBundle没有被清理干净的情况。开发团队可以通过Unity Profiler直接查看其使用具体的使用情况,并确定Take Sample时AssetBundle的存在是否合理;
  • 对于占用WebStream较大的AssetBundle文件(如UI Atlas相关的AssetBundle文件等),建议使用LoadFromCacheOrDownLoad或CreateFromFile来进行替换,即将解压后的AssetBundle数据存储于本地Cache中进行使用。这种做法非常适合于内存特别吃紧的项目,即通过本地的磁盘空间来换取内存空间。
    注意:关于AssetBundle的详细管理机制,建议查看AssetBundle技术文章

标签:文件,AssetBundle,占用,引擎,内存,模块,WebStream,加载
From: https://www.cnblogs.com/comradexiao/p/18473753

相关文章

  • 关于Flask模块化开发方式
    关于Flask模块化开发方式可以使用两个后端代码来分别控制不同的模块。在Flask和Waitress这样的框架中,这通常通过以下几种方式来实现:使用蓝图(Blueprints):Flask提供了蓝图功能,允许你将应用程序的不同部分拆分为多个模块。这些蓝图可以分别处理不同的逻辑或功能区域......
  • Python 常用模块(五):datetime模块
    目录一、常见时间名词二、datetime模块介绍三、datetime模块中的常量以及几个常用类3.1datetime模块中的常量3.2datetime模块中的几个常用类3.2.1date类3.2.2time类3.2.3datetime类3.2.4timedelta类3.2.5timezone类四、常用方法介绍4.1datetime对象常用方法4.1......
  • Ansible操作MySQL常用的几个模块
    1. mysql_user模块mysql_user模块用来添加,删除用户以及设置用户权限创建MySQL数据库的用户与口令(非root@localhost用户),直接通过playbooks中的案例来说明吧。-name:创建MySQL数据库用户--user_testmysql_user:#-----登陆数据库login_host:"localhost"......
  • 大语言模型:人工智能新时代的核心引擎
    本文将介绍一些被广泛认为非常好用的AI工具。这些工具涵盖了不同的应用领域,包括写作、图像处理、编程辅助等,它们都在各自的领域中表现出色,深受用户喜爱。1.ChatGPT(OpenAI)用途:自然语言处理,内容生成,编程辅助功能特点:ChatGPT是一款强大的对话AI工具,可以帮助用户撰写文章、......
  • 【工具使用】MSF使用_MSF中kiwi(mimikatz)模块
    一、简介:kiwi模块:mimikatz模块已经合并为kiwi模块;使用kiwi模块需要system权限,所以我们在使用该模块之前需要将当前MSF中的shell提升为system。二、前提:1.提权到system权限当前权限是administrator用户若不是,需要利用其他手段先提权到administrator用户。然后adminis......
  • 完整的智能物联中台应该具备哪些子产品和模块呢?
    一套智能物联网中台,我们认为应该是有多个模块/产品整体组合、堆叠而来。每个模块/产品解决具体问题,拆开了能各自使用,组合就能成为一套大工具。总之,否则老是用大炮打蚊子就不合适,合适的场景需要合适的产品要对应。但这个分拆非常有技巧。我们认为,一套优秀的智能物联中台应该有以下......
  • 无线串口模块—配置软件以及串口助手的使用
    1、适用型号本文适用于无线串口模块调试。文中的软件界面截图,可能会由于软件系列、软件版本不同而略有区别。2、使用参数设置软件RF_Setting使用方法(以E32-433TBL-01型号lora模块开发测试套件说明)说明:E32-433TBL-01是贴片串口模块结合USB转TTL串口底板形成的无线模块开发成套......
  • 无线串口模块—配置软件以及串口助手的使用
    1、适用型号本文适用于无线串口模块调试。文中的软件界面截图,可能会由于软件系列、软件版本不同而略有区别。2、使用参数设置软件RF_Setting使用方法(以E32-433TBL-01型号lora模块开发测试套件说明)说明:E32-433TBL-01是贴片串口模块结合USB转TTL串口底板形成的无线模块开发成套测试产......
  • APP端地图模块
    需求:在uniapp中写一个页面,实现在页面中全屏展示地图模块,使用高德地图API获取当前位置的经纬度坐标,将经纬度度坐标转换为当前位置的中文名,将获取的经纬度展示在map组件中,并且在当前位置上显示标记图,标记当前的位置,在页面中显示出来,点击标记图片会弹出详细信息的气泡,在气泡中展示......
  • 长途自驾游太累?火山引擎数据飞轮携手车企持续优化驾车体验
    机票太贵,火车票、高铁票太难抢,客运大巴车长途体验不佳……假期出行,对于普通人来说,还有哪些交通工具选择?过去,因为种种原因,大多数人在中长途旅行前很少将自驾纳入考虑范围;但现在,得益于数智赋能,围绕汽车主体本身已经衍生出种类繁多的用户服务,能够为驾驶人及乘客提供多种场景下的全方......