0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Unity Profiler分析内存使用状况疑问解答

汽车玩家 来源:SegmentFault 作者:SegmentFault 2020-01-31 09:52 次阅读

在使用Unity开发游戏的过程中,借助Profiler来分析内存使用状况是至关重要的。但许多开发者可能还对Profiler中各项数据表示的含义不甚明确,Unity官方的技术工程师柳振东,将针对Profiler内存分析相关的问题及解答,与大家进行分享。

要想完全发挥Profiler内存分析的威力,首先要做的就是了解Profiler展示的数据所表达的含义,以及到底哪些模块所使用的内存才会被统计到Unity的Profiler中。Profiler涉及到的知识点还有很多,我们今天先从中挑选一些大家常有的疑问来作解答。

Unity Profiler分析内存使用状况疑问解答

1. 在Unity的Profiler中看到的总内存使用和我使用其它工具看到的系统内存占用不太一样,这是为什么呢?

Profiler中看到的内存是通过Unity自身引擎看到的内存分配,凡是引擎Allocation和Deallocation的内存,引擎均有记录,所以我们可以给出确切的引擎内存占用信息。但是,仍有其他内存我们是无法获知的。

比如,如果引擎使用了第三方库,那么库分配的内存我们是无法进行统计的。另外,在移动设备上大家看到的内存,其实都要比Profiler大很多,这是因为不管是通过Xcode的Instrument还是通过Android的USS,其记录的真实物理内存都包括两部分,一个是真实Used的物理内存,另一个则是缓存的(Cached)的物理内存。这是OS所决定的,Android和iOS系统在资源不使用时均不会立即将其进行回收,而是将其放在缓存的物理内存中,以便下次再用时,可以快速地加载。当系统发现App的内存不够用时,才会在底层调用一个memory killer线程来轮询缓存物理内存,进而为app来清理内存。而Unity Profiler记录的则是目前真实使用的物理内存,即上述所说的第一部分。因此,当游戏运行时间越长,Profiler分配内存和通过其他软件获得的系统内存差距会越大。

因此,只要所使用的第三方库不存在内存泄露问题,我们一般都建议只需要查看Profiler即可,只要Profile中的内存可以保证正常升高和回落,那么引擎这边分配的内存就是没有问题的。

2. 我们做项目的时候发现有时profiler中System.ExecutableAndDlls这项占用很多,有什么解决办法吗?

“System.ExecutableAndDlls”该项显示的是执行文件和所调用的库(物理、渲染、IO等系统库)的总和。请不用担心该选项的数值,因为很多Application均在共用这些库,并且它对于真实游戏的内存压力非常小,而且也不会导致OS因为该内存来Kill掉游戏。

3. 为什么在Profiler中的Simple模式下,Used Total的数值不等于其右边各项Unity,Mono,GfxDriver,FMOD与Profiler总和呢?

其实在Unity中,Used Total的计算公式为Used Total = Unity + Mono + GfxDriver + Profiler + additionalUsedMemory。公式中的additionalUsedMemory项在profiler中并没有显示,因为这一项一般情况下都为0,只在某些特殊发布平台下才会有数值(一般Android,PC和IOS都为0)。因此一般情况下Used Total的值就是除FMOD之外各项的总和了。当然,这个规则对于Reserved Total是同样适用的。

4. 我们项目的资源主要使用AssetBundle动态加载资源,发现Profiler中Detailed模式下PersistentManager.Remapper一项占用时多时少,这一项主要是做什么的呢?

Remapper主要提供文件的持久化存储,包括各种序列化的asset,项目的setting文件等,维护文件系统的中的文件与内存中数据的对应关系。那么如果项目大量使用AssetBundle的话,在对AssetBundle进行Unload之前都会需要占用Remapper的内存的。而Remapper本身的实现使用内存池,其数值只会增大,那么为了使Remapper占用的内存保持在一个稳定的数值上,我们需要每次在加载一定数量的AssetBundle之后进行Unload操作,而不要一次性把所有AssetBundle都加载后才调用Unload。(这样的操作对维持整个mono heap的大小也是至关重要的,因为mono heap本身也是只增大不减小的)

5. 我们在Editor中调试项目的时候发现纹理的内存大小是其本身大小的两倍,是因为Unity把内存和显存的大小都计算进去了吗?

其实并不是这个原因,因为Editor本身会保有纹理的一份内存,在Editor下进行profiler会把Editor本身所使用的纹理大小也计算进去,因此会有内存变为两倍的情况。我们官方并不建议在Editor下对项目进行性能调试,而是务必要在真机上跑编译好的项目,然后连接profiler进行调试,只有这样才能得到真正精确的测试数据。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 内存
    +关注

    关注

    8

    文章

    2767

    浏览量

    72765
  • Unity
    +关注

    关注

    0

    文章

    126

    浏览量

    21531
收藏 人收藏

    评论

    相关推荐

    鸿蒙开发-DevEco Studio Profiler工具进行帧率分析

    Frame Profiler概述 DevEco Studio内置Profiler分析调优工具,其中Frame分析调优功能,用于录制GPU数据信息,录制完成展开之后的子泳道对应录制过程中
    发表于 01-16 19:34

    MOTOR PROFILER分析电机参数失败的原因?

    在这里咨询一个关于MOTOR PROFILER分析电机的一个问题。 我目前使用的开发板:B-G431B-ESC1; 电机极对数:1; 最大转速:1W8; 最大电流:40A; 母线
    发表于 03-25 06:08

    使用Trepn Profiler工具分析Dragonboard410c的功耗和性能

    一些数据点。设置监控CPU、GPU和内存的负载情况,同时监控耗电情况,再运行Firefox火狐浏览器可以清楚的看到每个数据点的实时使用情况,使用Trepn Profiler工具来分析Dragonboard410c是非常方便的。
    发表于 09-25 16:09

    Qualcomm Trepn Power Profiler常见问题分析总结

    以前对Trepn Power Profiler进行过简单的介绍,这是Qualcomm开发的一个工具,主要对android设备的功耗和性能进行分析。今天简单总结一下,在使用过程中比较常见的问题。 1.
    发表于 09-25 16:14

    使用Snapdragon Profiler工具分析Dragonboard410c

    之前简单介绍了一下Snapdragon Profiler工具,现在我们实际用它来分析一下Dragonboard410c。启动和配置1、我的系统是ubuntu16.04,直接在Terminal进入
    发表于 09-25 16:14

    为什么Motor Profiler实用程序无法使用上述BLDC电机完成Profiler序列?

    ,4000 rpm通过此设置,Motor Profiler无法成功完成分析序列。在仿形循环期间,在确定电气模型期间,电动机每次仿形尝试都变慢。序列因消息而停止:分析序列需要很长时间。为什么Motor
    发表于 06-05 11:30

    labview与unity通讯问题

    labview能与unity通讯吗,求解答
    发表于 06-16 15:23

    直读光谱仪疑问解答

      直读光谱仪疑问解答   1.直读光谱仪测试出的合金分析曲线好坏怎么辨别?   主要看在作完工作曲线后,通过工作曲线的标样的测定值与真值之间的差异,偏
    发表于 09-01 15:51 10次下载

    关于电池的一些疑问解答

    关于电池的一些疑问解答 (1)电池不用时,低温冷藏,正确吗?  错误,将电池低温冷藏并不能够延长电池的使用寿命
    发表于 11-13 14:25 506次阅读

    投影机日常使用疑问汇总与解答

    投影机日常使用疑问汇总与解答 Q:投影机连接笔记本电脑, 无输出影像?
    发表于 02-06 09:36 384次阅读

    分析仪选购疑问解答分析

    如何在众多型号的分析仪中选择合适的一款需要多方面的考虑,本文将为您解答在挑选市场上各种分析仪时所遇到的疑问,并帮助您做出正确的选购决定。
    发表于 02-11 11:36 651次阅读
    <b class='flag-5'>分析</b>仪选购<b class='flag-5'>疑问</b><b class='flag-5'>解答</b><b class='flag-5'>分析</b>

    华为BBU、RRU设备疑问解答

    华为BBU、RRU设备疑问解答,各位支持下哦!!!!!
    发表于 11-18 16:55 15次下载

    电视天线与电视接收300疑问解答

    关于对电视天线与电视接收300疑问解答
    发表于 03-17 15:25 29次下载
    电视天线与电视接收300<b class='flag-5'>疑问</b><b class='flag-5'>解答</b>

    如何使用QML Profiler分析QML应用

    在QML应用开发过程中,可以使用QML Profiler来查找应用程序中典型性能问题的原因,例如启动慢、响应慢、用户界面不流畅等。
    的头像 发表于 09-13 11:37 1523次阅读

    line_profiler性能分析工具简单的使用

    line_profiler 是一个用于对函数进行逐行分析的模块。Python 当前的分析工具仅仅支持一个函数的时间消耗分析
    的头像 发表于 03-03 14:39 1413次阅读
    line_<b class='flag-5'>profiler</b>性能<b class='flag-5'>分析</b>工具简单的使用