前言
在日常开发中,我们除了要具备对rumtime app的代码跟踪能力,同时也要具备对runtime app的性能分析能力,内存分析就是性能分析中的重要环节之一,这里以Android为例。
调试环境
版本: Unity 6
机型: OPPO PHJ110
安卓版本: Android 13CPU架构:ARMx64
Memory Profiler:1.1.0
环境搭建
- 点击Unity工具栏的 Edit 选项
- 打开 Preferences 页面
- 选中 Adaptive Performance 页签
- 检查并勾选对应平台的 XXXXXX Provider 选项
安装内存分析插件
- 点击Unity工具栏中的 Window 选项
- 打开 Package Manager 面板
- 选中 Unity Registry 页签
- 在检索框中输入 memory 关键字
- 选中 Memory Profiler 并,点击Install按钮进行安装
安装后的插件条目尾部会带有√号标志。
构建选项
在构建选项中我们只需要勾选 Development Build和DeepProfilling Support 选项即可,在使用 profile 分析 runtime app时,可以使用构建Mono的版本,加快构建的速度。
工程概况
组成的界面
资源概况
经过ASTC8x8压缩过的背景图片一张
经过ASTC6X6压缩过的Sprites4张
默认设置的map bgm一个
打开Profiler面板
- 点击Unity工具栏中的 Window 选项
- 点击下拉菜单中的 Analysis 选项
- 点击二级菜单中的 Profiler 选项,打开面板
使用快捷键 Ctrl + 7,打开Profiler面板
连接Profiler
方法1 自动连接
在构建选项里,勾选Autoconnect Profiler选项,然后 Build and Run
方法2 手动连接
- 点击Profiler 菜单栏中的 Play Mode 选项卡
- 点击 <Enter IP> 按钮
- 在Enter Player IP 窗口,输入IP地址,如192.168.0.xxx
- 点击 Enter Player IP窗口的Connect按钮,连接实例
手动连接时,profiler会遍历这个实例地址的所有端口,直到连接成功。所以,在手动连接时,请保持runtime app处于激活状态。
开启内存分析模块
- 在 Profiler Modules 选项卡中
- 勾选 Memory 选项
启用 Memory 分析选项后,可以再左边的Modules列表中看到Memory选项卡,如下图:
操作流程
- 运行 app
- 确保 profiler 连接到实例
- 切换到 Memory Module选项卡
- 默认会展示 Simple 页签下的简介信息
- 点击 Open Memory Profiler 按钮,打开分析器
- 点击 Capture New Snapshot,截取一张新的内存快照
- 点击生成的快照,打开快照详情面板,并切换到 Unity Objects 页面
- 在表单中可以看到每项的内存占用情况,同时在点击具体对象时还可以浏览资源的详情,以及引用情况
- 可以看到 runtime app下background1920x1080的内存占用,和编辑器中预览是一致的,没有什么问题。
这篇文章只是做一个简单的流程讲解,Memory Profiler中有很多功能,在这里就不一一介绍了,感兴趣的小伙伴可以去科普下。
FAQ
在捕捉快照时一直卡在进度条那里没有反应?
答:确定下是否勾选了 DeepProfilling Support 选项。
勾选了Autoconnect Profiler但是Profiler没有反应?
答:确实会存在这种问题,不妨尝试下手动连接。