内存管理
来源:互联网 发布: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:好插件让你事半功倍!【资源篇】
- 内存管理
- 内存管理
- 内存管理
- 内存管理
- 内存管理
- 内存管理
- 内存管理
- 内存管理
- 内存管理
- 内存管理
- 内存管理
- 内存管理
- 内存管理
- 内存管理
- 内存管理
- 内存管理
- 内存管理
- 内存管理
- Swift 枚举关联值
- IBM x3650 M4服务器,电源断电后,来电自动开机
- Hadoop基础教程-第5章 YARN:资源调度平台(5.4 YARN集群运行)(草稿)
- 重要开发网站-持续更新
- M_CYOUSA
- 内存管理
- where条件语句
- 1120. Friend Numbers (20)[字符串处理]
- Linux中用户名和用户组的管理
- 2-3树
- 图
- linux下添加用户并赋予root权限
- [数论] 2017 计蒜之道 初赛 第一场 阿里天池的新任务
- 总体性能——GC调用