Unity中的资源管理-使用Profile分析内存使用情况

本文详细介绍了如何使用Unity的Profile性能分析工具来研究AssetBundle在不同阶段的内存使用情况。通过加载、卸载Ab,加载纹理和预制体等操作,分析了内存变化,强调了在卸载时正确清理引用的重要性,以避免内存泄漏问题。文章还提供了简单的测试用例,帮助读者深入理解Unity的资源管理。

本文分享Unity中的资源管理-使用Profile分析内存使用情况

在上一篇文章中, 我们介绍了Ab的加载和使用, 并简单列举了其内存分布情况. 今天我们继续探索Ab的内存, 观察和实验其在各种阶段的分布情况.

Profile性能分析工具

在一切开始之前, 我们先简单介绍下Unity提供的性能分析工具: Profile.

Profile是Unity提供的一款性能分析工具, 与Editor一同发布, 我们可以在Window菜单下找到它, 不同版本的位置不同, 比如在Unity2017(Window->Profile), 而在Unity2019(Window->Analysis->Profile).

打开之后如图所示(本文基于Unity2019.4.26f1, 不同版本会有所差异, 但是大同小异):

在这里插入图片描述

我们关注左边的菜单:

  • CPU Stage: CPU使用情况
  • Rendering: 渲染情况
  • Memory: 内存情况

每个菜单点击之后, 下方的说明面板都有对应的概要情况说明.

注意本文只关注内存部分. 其它部分情况类似, 各位同学可以自行摸索, 传送门在此.

在选择内存菜单之后, 下方的说明面板可以有两种视图, 分别是: Simple(简单说明), Detailed(详情).

Simple视图展示Unity在每帧的实时内存信息概括, Unity会提前向系统申请预留内存, 以减少频繁的内存请求, 这个视图只是展示了各个类型的内存使用量, 而不涉及具体的细节.

展示的信息包括如下:

  • 第一行:
    • Used Total: 后续所有内存总和, 如上图:(Unity+Mono+GfxDriver+Audio+Video+Profile=341.6M)
    • Unity: Unity的原生代码使用的内存大小
    • Mono: 托管代码使用的内存大小
    • GfxDriver: 驱动程序对纹理, 渲染目标, 着色器和网格数据使用的内存估计量
    • Audio/Video: 音频和视频系统使用内存大小
    • Profiler: 性能分析器使用的总的内存大小
  • 第二行: 与第一行类似, 只是描述的是Unity向系统申请的预留内存.
  • 第三行: 整个系统所用内存大小, 与任务管理器中使用的大小一致, 根据该平台是否允许从系统获取内存情况, 这个值会显示不同的大小, 一般情况下都会大于上两行的总和, 因为Profile无法追踪所有的内存.
  • 更多行: 其余的信息一目了然, 分别是不同类型的资源所占内存大小, 还有游戏对象数量等基础信息, 这里不再赘述.

Detailed视图展示内存使用详情, 因为信息量巨大, 所以采用截图采样(或者说叫快照)的方式(Take Sample)截取某一帧进行分析, 同时, 勾选上中部的Deep Profile之后, 能够获取更多的信息, 启用Gather object references可以收集对象可能的引用

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拂面清风三点水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值