一、 安装
安装有两种
方式一:
add package : com.unity.memoryprofiler
方式二:
From Packages : Unity Registry 搜索 Memory Profiler
二、 使用
- 打开:Windows - > Analysis - > Memory Profiler
- 打开MemoryProfiler界面,可以链接真机检测,也可以在Editor检测。 点击Capture 保存当下帧的内容。
-
Capture 完毕之后,会保存本地一个镜像 : * .snap文件
-
点击Snap 会显示对应帧的详细信息
三、 单帧检测
- 单帧检测, 一般去看工程内的资源, 去检查占用内存特别大的游戏对象。
在TreeMap界面进行检查, 这里已经分好类, 同时可以根据Size的大小进行排序
查看内存占用较大的游戏对象进行优化处理
- 内存地址查看
Fragmentation 页签进行查看, 点击对应的地址块,下方可显示详细信息
四、 两帧对比检测
一般使用两帧率对比用于检测内存泄漏。
在要对比的节点分别进行Capture, 点击Compare Snapshots进行对比,在分别点击两个Capture,进行对比
Summary页签可看汇总的对比内容
在Objects and Allocations 页签可看详细的对比内容, 一般进行筛选。
筛选方式:Diff -> Match -> new
筛选之后就可以进行详细分析了, 可通过查看Size, Type, Referenced By等标签查看对应的游戏对象。
对于有问题的对象, 可以查看对应详细的引用列表找到具体是哪里出问题
五、总结
MemoryProfiler 是一个非常好用的检查内存问题的工具,以下问题都可以通过该工具进行排查
- 查找有问题的游戏资源,例如:Mesh和贴图非常大的美术资源
- 内存泄漏问题
- 游戏对象引用问题