Bootstrap

DEBUG [2] 使用Memory Profiler联机进行内存分析

前言

        在日常开发中,我们除了要具备对rumtime app的代码跟踪能力,同时也要具备对runtime app的性能分析能力,内存分析就是性能分析中的重要环节之一,这里以Android为例。

调试环境

版本: Unity 6
机型: OPPO PHJ110
安卓版本: Android 13

CPU架构:ARMx64

Memory Profiler:1.1.0

环境搭建

  1. 点击Unity工具栏的 Edit 选项
  2. 打开 Preferences 页面
  3. 选中 Adaptive Performance 页签
  4. 检查并勾选对应平台的 XXXXXX Provider 选项
安装内存分析插件
  1. 点击Unity工具栏中的 Window 选项
  2. 打开 Package Manager 面板
  3. 选中 Unity Registry 页签
  4. 在检索框中输入 memory 关键字
  5. 选中 Memory Profiler 并,点击Install按钮进行安装

安装后的插件条目尾部会带有√号标志。

构建选项

        在构建选项中我们只需要勾选 Development Build和DeepProfilling Support 选项即可,在使用 profile 分析 runtime app时,可以使用构建Mono的版本,加快构建的速度。

工程概况
组成的界面

资源概况

经过ASTC8x8压缩过的背景图片一张

经过ASTC6X6压缩过的Sprites4张

默认设置的map bgm一个

打开Profiler面板
  1. 点击Unity工具栏中的 Window 选项
  2. 点击下拉菜单中的 Analysis 选项
  3. 点击二级菜单中的 Profiler 选项,打开面板

使用快捷键 Ctrl + 7,打开Profiler面板

连接Profiler

方法1 自动连接

     在构建选项里,勾选Autoconnect Profiler选项,然后 Build and Run

方法2 手动连接

  1. 点击Profiler 菜单栏中的 Play Mode 选项卡
  2. 点击 <Enter IP> 按钮
  3. 在Enter Player IP 窗口,输入IP地址,如192.168.0.xxx
  4. 点击 Enter Player IP窗口的Connect按钮,连接实例

手动连接时,profiler会遍历这个实例地址的所有端口,直到连接成功。所以,在手动连接时,请保持runtime app处于激活状态。

开启内存分析模块
  1. 在 Profiler Modules 选项卡中
  2. 勾选 Memory 选项

启用 Memory 分析选项后,可以再左边的Modules列表中看到Memory选项卡,如下图:

操作流程
  1. 运行 app
  2. 确保 profiler 连接到实例
  3. 切换到 Memory Module选项卡
  4. 默认会展示 Simple 页签下的简介信息
  5. 点击 Open Memory Profiler 按钮,打开分析器
  6. 点击 Capture New Snapshot,截取一张新的内存快照
  7. 点击生成的快照,打开快照详情面板,并切换到 Unity Objects 页面
  8. 在表单中可以看到每项的内存占用情况,同时在点击具体对象时还可以浏览资源的详情,以及引用情况
  9. 可以看到 runtime app下background1920x1080的内存占用,和编辑器中预览是一致的,没有什么问题。

这篇文章只是做一个简单的流程讲解,Memory Profiler中有很多功能,在这里就不一一介绍了,感兴趣的小伙伴可以去科普下。

FAQ
在捕捉快照时一直卡在进度条那里没有反应?

答:确定下是否勾选了 DeepProfilling Support 选项。

勾选了Autoconnect Profiler但是Profiler没有反应?

答:确实会存在这种问题,不妨尝试下手动连接。

;