内存管理

来源:互联网 发布:mac os怎么切换输入法 编辑:程序博客网 时间:2024/05/23 16:53

内存占用:

总内存峰值(MB):项目运行时Unity引擎所统计的真实物理内存分配,这里并不包含系统缓存和第三方库的自身分配内存。

推荐值:< 150MB


GFX内存峰值(MB):项目运行时用于渲染的资源所占用的内存,该值为底层显卡驱动所反馈的内存分配量。一般来说,该部分内存占用主要由渲染相关的资源量所决定,包括纹理资源、Mesh资源、Shader资源以及解析这些资源的相关库所分配的内存等。

推荐值:< 80MB


Used Total和Reserved 均是物理内存,其中Reserved是unity向系统申请的总内存,Unity底层为了不经常向系统申请开辟内存,开启了较大一块内存作为缓存,即所谓的Reserved内存,而运行时,unity所使用的内存首先是向Reserved中来申请内存,当不使用时也是先向Reserved中释放内存,从而来保证游戏运行的流畅性。
一般来说,我们均建议尽可能地控制Used Total的大小,Used Total越大,则Reserved Total越大,而当Used Total降下去后,Reserved Total也是会随之下降的(但并不一定与Used Total同步)。

通过PSS来查看移动端的内存是相当不准确的。Profiler记录的是通过引擎分配的真实物理内存,而PSS中多出的内存大致分为两部分,一部分是App在运行会调用底层的一些核心库,这些库都会占用一定的内存;第二部分则是移动系统决定的,即虽然游戏中已经将资源卸载掉,但在系统层面上,系统并不会及时将其清除,而是将其缓存住,这样做的处理是为了便于以后该资源的复用效率,同时,当系统的内存分配达到上限时,系统本身会调用内存清理机制来轮询这些缓存区域,进而释放内存。

ManagedHeap的内存值是由所写的C#代码来引起并造成的,建议时刻关注CPU Profiler中的GC Collcet值,查看由哪些选项分配较大或不断分配GC Allocation。这个是造成ManagedHeap不断增大的原因。

GfxDriver可以理解为GPU显存开销,主要由Texture,Vertex buffer以及index buffer组成。所以尽可能地减少或释放Texture和mesh等资源,即可降低GfxDriver内存。


资源使用:


ARPG走势,在切场景时,进行资源大量的加载,在回主城时进行卸载,需保证资源没有泄露;


在主场景,全部都是UI时,纹理占用内存最多;

 

纹理资源:

内存峰值(MB):表示纹理资源在使用过程中的内存最大量。建议结合运行截图来判断内存使用是否合理。

推荐值:< 50MB 


网格资源:

内存峰值(MB):项目运行过程中,网格资源的内存占用峰值。建议结合运行截图来判断内存使用是否合理。

推荐值:< 20MB 


推荐文章链接:

1:性能优化,进无止境-内存篇(上)

2:性能优化,进无止境---内存篇(下)

3:关于Unity内存优化,你可能遇到这些问题

4:Unity加载模块深度解析(纹理篇)

5:如何优化资源,你还差这一步!

6:好插件让你事半功倍!【资源篇】



原创粉丝点击