UnityTips 之 内存占用分析——MemoryProfil
大家在生产的过程中,都不是很清除自己的资源到底占用了多少内存,unity这一款未正式发布的小工具可以帮大家大体定位到底内存用在了哪里,虽然运行环境千姿百态,但这些数据也有一定的参考价值。
整体界面如下:
[图片上传失败...(image-618a03-1568971718915)]
运行方式:菜单栏 Game/Memory/UnityProfiler 在运行或非运行状态下都可以运行起来
由于是自定义集成,所以打开位置不是固定不变的,下次更新会放在哪里 还要看程序指定到哪里
界面介绍:
TakeSnapshot:采集当前一帧并进行分析。
SaveSnapshot:保存采集完的数据到文件 方便以后查看
LoadSnapshot:从文件加载分析数据,就是上一条保存的那个数据。
左侧是彩色放方块,就是每一类资源占用的内存。点击后以大块会拆解成很多小块,点击每一小块后,在右侧就可以看到资源的具体信息,比如 被谁引用,什么类型,引用了谁等这些。
具体样例:
运行游戏到任一场景:这里我们选择大地图
[图片上传失败...(image-781c52-1568971718915)]
打开分析工具:
[图片上传失败...(image-566237-1568971718915)]
点击TakeSnapshot来进行当前帧的数据采集与分析:一般可能要等三五分钟,也有可能会引起Unity崩溃。
[图片上传失败...(image-7ce249-1568971718915)]
分析完成后的界面如图:我们可以看到shader占到91M的内存
[图片上传失败...(image-f115fc-1568971718915)]
点击shader方块:破碎成许多小方块。每一个小方块都是一个shader。
[图片上传失败...(image-4c2708-1568971718915)]
点击最大的shader方块,来看一下其内存占用与详细信息。
[图片上传失败...(image-d10492-1568971718915)]
可以看到,最大的shader使用了35M内存,名为particle/Standard Suface。
类似就可以分析贴图文件大小,点击Textrue2D 可以看到有许多6M以上的贴图,我们选择10.7M的贴图来查看。
[图片上传失败...(image-4f0515-1568971718915)]
可以看到 贴图是未压缩格式。所以内存占用会很大。
同理 Animator。 AnimationClip也可用同样的方法查看
注意:此工具为未正式发布工具,所以存在bug 容易引起内存暴增,unity崩溃等问题。