加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

在Unity的内存管理机制中, Reserved Total 和 Used Total之间的关系是怎样的?

(2016-01-30 18:31:03)
标签:

杂谈

Reserved Total 和 Used Total为Unity引擎在内存方面的总体分配量和总体使用量。 一般来说,引擎在分配内存时并不是向操作系统 “即拿即用”,而是首先获取一定量的连续内存,然后供自己内部使用,待空余内存不够时,引擎才会向系统再次申请一定量的连续内存进行使用。所以,从图表中可以看到,Reserved Total 的内存占用量略大于 Used Total, 且两者走势基本一致。


补充知识点:对于绝大多数平台而言,Reseved Total内存 = Reserved Unity内存 GFX内存 FMOD内存 Mono内存。


Reserved Unity  Used Unity 为Unity引擎自身各个模块内部的内存分配,包括各个Manager的内存占用、序列化信息的内存占用、WebStream的内存占用和部分资源的内存占用等等。

通过针对大量项目的深度分析,我们发现导致 Reserved Unity 内存分配较大的原因主要有以下几种:

WebStream内存占用:WebStream为项目通过特定API(WWW、CreateFormMemory等)加载AssetBundle文件所开辟的较大块内存。主要用于存放AssetBundle的原始数据和解压后数据。

序列化信息内存占用:Unity引擎的序列化信息种类繁多,其中最为常见且内存占用较大的为 SerializedFile。该序列化信息的内存分配主要为项目通过特定API(WWW.LoadFromCacheOrDownload、CreateFromFile等)加载AssetBundle文件所致。

资源内存占用:主要包括Mesh、AnimationClip、RenderTexture等资源。在默认情况下,当FBX模型导入时,其 “Read/Write Enable” 选项是默认开启的,即其Mesh网格数据会在 Reserved Unity 中保留一份,便于项目在运行时对Mesh数据进行实时的编辑和修改。同时,如果研发团队同样开启了纹理资源的 “Read/Write Enable” 选项(默认情况下为关闭),则纹理资源同样会在 Reserved Unity 中保留一份,进而造成其更大的内存占用。

GFX内存 为底层显卡驱动所反馈的内存分配量,该内存分配由底层显卡驱动所控制。一般来说,该部分内存占用主要由渲染相关的资源量所决定,包括纹理资源、Mesh资源、Shader资源以及解析这些资源的相关库所分配的内存等。


(关于Unity的内存管理机制,请戳https://www.uwa4d.com/doc-pa-memory.html 同时,我们也会在以后的微信推送中开设内存专题,欢迎关注!)

http://tc/maxwidth.2048/tc.service.weibo.com/p/mmbiz_qpic_cn/476a80446eebc98d91ee13cb169da92e.jpgReserved Total 和 Used Total之间的关系是怎样的?" TITLE="在Unity的内存管理机制中, Reserved Total 和 Used Total之间的关系是怎样的?" />

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有