美文网首页
iOS 内存、CPU占用情况探究 - Unity

iOS 内存、CPU占用情况探究 - Unity

作者: JamieChen | 来源:发表于2021-04-22 23:38 被阅读0次

    探究目的:

    Unity作为3D图像引擎植入iOS端中,其内存及CPU占用情况贯穿整个App开发是一个相对较大的问题,为了更快的加载速度和更及时的交互相应,进行了此次探究。

    用到的工具 Instruments Leaks 在使用过程中遇到问题可参照 iOS用Instruments Leaks调试出现问题解决方案 进行解决


    进行测试

    测试环境

    设备:iPhone 11
    iOS:14.4.2
    Unity:
    Xcode:Version 12.4 (12D4e)
    iOS Unity混合模式
    测试时长:
    首先来看看未加载Unity时App 的初始状态


    image.png

    加载Unity并作展示后的状态


    image.png Unity CPU使用情况

    测试步骤

    1. 进入Unity页面
    2. 退出Unity页面
    3. 反复进入Unity 页面
    4. 切换Tab后前往其他Unity页面并在Unity页面进行点击、打开窗口、执行动作等操作
    5. 退出并返回首页Tab进入Unity页面,之后退出Unity页面

    现象分析:

    1. 因Unity在App初始时执行加载所以在App打开时内存已经提升至320左右,在打开Unity页面时会有小幅升高,但退出时内存便得以释放。
    2. 在Unity在加载后CPU占用是中保持在45%以上,在Unity场景中执行动作时CPU的使用率会有明显升高的情况,在App不展示Unity页面时,CPU使用率也没有出现下降的迹象。

    优化方案

    资料分享:https://mp.weixin.qq.com/s/GB7TJtfhTkmcP8so0IlOlQ
    讨论:https://www.zhihu.com/question/26779558

    1. 控制Unity视图不展示时的CPU占用;
      未完待续

    名词解释:

    All Heap & Anonymous VM
    Heap 堆内存
    Anonymous VM 虚拟内存

    All Heap Allocations:进程运行过程中堆上分配的内存,简单理解就是实际分配的内存,包括所有的类实例,比如UIViewController、UIView、Foundation数据结构等。比如:
    Malloc 512.00KiB: 分配的512k堆内存,类似还有 Malloc 80.00KiB等
    CTRun: Core Text对象内存
    All Anonymous:主要包含一些系统模块的内存占用以 VM: 开头

    VM: IOSSurface:用于存储FBO、RBO等渲染数据的底层数据结构,是跨进程的,通常在CoreGraphics、OpenGLES、Metal之间传递纹理数据
    VM: Stack: 栈内存(比如每个线程都会需要500KB)
    VM: IOAccelerator:图片的CVPixelBuffer


    相关文章

      网友评论

          本文标题:iOS 内存、CPU占用情况探究 - Unity

          本文链接:https://www.haomeiwen.com/subject/pgttrltx.html