Memory Profiler 模块在 Profiler 窗口顶部的图表中显示内存数据。它在窗口下半部分的详细信息面板中详细显示 Unity 在每一帧在哪些方面分配了内存。
内存模块的图表有六个类别,这些图表显示有关应用程序在哪些方面分配了内存的详细信息。
| 图表 | 描述 |
|---|---|
| Total Used Memory | 应用程序使用的内存总量。 |
| Texture Memory | 应用程序中的纹理 (Textures) 使用的内存量。 |
| Mesh Memory | 应用程序中的网格 (Meshes) 使用的内存量。 |
| Material Count | 应用程序中的材质 (Materials) 实例数量。 |
| Object Count | 应用程序中的原生对象实例数量。 |
| GC Used Memory | 垃圾收集堆使用的内存量。 |
| GC Allocated In Frame | 垃圾收集堆中每帧分配的内存量。 |
选择内存模块时,详细信息面板会详细显示 Unity 在应用程序中哪些方面分配了内存。下拉选单提供了以下选项:
| 视图 | 描述 |
|---|---|
| Simple 视图 | 显示 Unity 在应用程序中哪些方面分配了内存的基本概述。 |
| Detailed 视图 | 重要信息:此视图已弃用。请改用内存性能分析器包。如果安装了内存性能分析器包,请选择详细信息面板顶部的打开内存性能分析器 (Open Memory Profiler) 按钮以打开内存 Profiler 窗口。 |
Simple 视图指示操作系统报告的应用程序正在使用的内存量。此值基于 System Used Memory 性能分析器计数器得出。在支持从操作系统获取应用程序总内存大小的平台上,System Memory Usage 大于 0,并且与任务管理器中的大小相同。
Unity 设置了可用于分配的内存池,从而避免过于频繁向操作系统索取内存。性能分析器模块显示 Unity 保留的内存量,以及 Unity 在性能分析器捕获时使用的内存量(使用中/保留)
以下参考表描述了 Simple 视图中的可用统计信息。您可通过 ProfilerRecorder API 以及在性能分析器模块编辑器中找到相应的性能分析器计数器,这样就可以将它们添加到自定义性能分析器模块中。
总提交内存显示 Unity Memory Manager 系统为所选帧跟踪的内存总量。
| 值 | 描述 |
|---|---|
| Tracked Memory (In use / Reserved) | Unity 使用和跟踪(使用中 (in use))的内存总量,以及 Unity 为跟踪目的和内存池分配(保留 (Reserved))所保留的内存量。 |
| Untracked Memory | 指示 Unity 使用但不知道的内存总量。未跟踪内存的一些示例如下: - 通过原生插件或某些驱动程序分配的内存 - Mono 或 IL2CPP 类型元数据 - 可执行代码和 DLL 文件使用的内存 内存性能分析器包和原生平台提供商可能了解更多有关其中一些未跟踪内存量的信息。 |
注意:Tracked Memory (In use / Reserved) 统计信息与性能分析器计数器的对应关系是 System Used Memory 对应使用中内存,而 Total Reserved Memory 对应保留内存。
根据 Unity 为其分配内存的子系统,将总提交内存拆分为多个高级类别。
并非所有内存系统都会使用内存池或区分已用内存和保留内存。它们会显示两个数字,即已用内存量和保留内存量。如果使用量与保留量使用不同的单位(B、MB、GB),Unity 将显示其单位,否则将其省略。
| 值 | 描述 |
|---|---|
| Managed Heap | 托管代码使用的已用堆大小和总堆大小。此内存量是垃圾收集量。 |
| Graphics & Graphics Driver | 驱动程序对纹理、渲染目标、着色器和网格数据使用的估计内存量。 |
| Audio | 音频系统的估计内存使用量。 |
| Video | 视频系统的估计内存使用量。 |
| Other | 显示 Unity 跟踪但未在特定计数器下报告的本机内存。要获取有关此类别或其他类别的构成的更多信息,请使用内存性能分析器包。 |
| Profiler | 性能分析器功能使用并从系统中保留的内存。 |
显示通常占用大量内存的资源类型(纹理、网格、材质、动画剪辑)的对象实例数量及其在内存中的累积大小(资源、游戏对象、场景对象)。
注意:这些统计信息不在发布版播放器中提供。
| 值 | 描述 |
|---|---|
| Textures | 已加载的纹理总数及其使用的内存。 |
| Meshes | 已加载的网格总数及其使用的内存。 |
| Materials | 已加载的材质总数及其使用的内存。 |
| Animation Clips | 已加载的动画剪辑总数及其使用的内存。 |
| Assets | 已加载的资源总数。 |
| Game Objects | 场景中游戏对象实例的总数。 |
| Scene Objects | 动态 UnityEngine.Object 实例的总数。此数值包括__ GameObject__Unity 场景中的基础对象,可以表示角色、道具、风景、摄像机、路径点等。GameObject 的功能由所附的组件决定。更多信息See in Glossary Count 计数器数字,加上组件的总数,以及场景中所有非资源内容的数量。 |
| GC allocated in frame | 显示所选帧中的托管分配量及其总大小(以字节为单位)。 |
启用此设置,可将总提交内存和总内存细分图表根据所选帧的内存使用量进行缩放。如果禁用此设置,则图表将根据整个帧范围内的内存总使用量进行缩放。此设置可以帮助您了解内存总量或相对量如何随帧变化。