Unity Profiler自身占用内存在发布包依然存在

1回答

Unity Profiler自身占用内存在发布包依然存在

提问者 远鹏-趣炫游戏 2017-11-08 1.1k浏览
这段时间在对项目的内存进行优化,使用UnityProfiler连安卓机Development Build(勾选Auto ConnectProfiler)出来的包时,显示profiler自身占用35~50M左右的内存。按理来说,非Development Build的情况下,内存应该有相应的下降,但在使用adb dumpsys meminfo做统计时,游戏的运行内存大小与是否使用Development Build并无太大关系(虽然包体本身确实缩小了)。

问:请问Unity Profiler自身是否占用内存,是的话不使用Auto ConnectProfiler能否降低游戏运行内存?

快来消灭0回答吧

{{ dataList.answer_count | view-format }}回答
  • Tsai 2017-11-09 10:33
    首先要说明一个情况:Profiler所监控到的数据和Android上的adb dumpsys meminfo或者其它工具检测到的会不一致,这是因为Unity Profiler反馈的是引擎的真实分配的物理内存,而Android上的工具中记录的则包括系统的部分缓存。一般情况下,Android或iOS并不会及时将所有App卸载数据进行清理,为了保证下次使用时的流畅性,系统会将部分数据放入到缓存,待自身内存不足时,OS Kernel会启动类似LowMemoryKiller的机制来查询缓存甚至杀死一些进程来释放内存。
    根据上面的理论,先回答第一个问题:
    Q:请问Unity Profiler自身是否占用内存
    A:是,但是它占用的是Unity引擎的内存。如果你在windows上开发,那么这个内存就是unity.exe在运行时使用的内存。这个内存包括了跟游戏相关的部分,比如纹理、网格等资源的内存。也包括了跟游戏无关的内容,比如IDE本身占用的内存。经典的例子是你可能会看到Profiler中AssetDatabase这一项占用内存很多,但是这个都是可以无视的,真机上不会有。

    Q:是的话不使用Auto ConnectProfiler能否降低游戏运行内存?
    A:根据上面的回答应该知道了这个问题不存在。



         
    2评论
  • {{ answer.user.NickName }} {{ answer.profession }} {{ answer.created_at | time-format }}
    专家回答
    {{{ answer.answer }}}
    {{ answer.answer_count | view-format }}评论
加载中... 查看更多回答