自定义分配器
Customize the allocator types with the Editor or command line.
阅读时间8 分钟最后更新于 1 个月前
**注意:**并非所有平台都支持这项功能。请参阅针对具体平台的文档以了解更多信息。
要自定义分配器设置,可以通过编辑器用户界面 (Editor UI) 编辑可配置的值,也可以将它们作为命令行参数提供。
使用编辑器
- 选择项目设置 (Project Settings) > 内存设置 (Memory Settings)。
- 选择要编辑的值旁边的锁定图标。

项目设置 (Project Settings) > 内存设置 (Memory Settings),显示对播放器内存设置的选择
注意:请参阅前面的各个分配器部分,查看通过编辑器用户界面 (Editor UI) 可自定义的字段。
使用命令行参数
要查找要更改的分配器参数的名称,请查看编辑器和播放器在启动时打印的分配器设置列表。例如,要更改主堆分配器的代码块大小,请使用
-memorysetup-main-allocator-block-size=<new_value>分配器参数名称及其默认值:
分配器 | 描述 | 参数名称 | 默认值 | ||
|---|---|---|---|---|---|
| 主分配器 | Unity 进行大多数分配所用的分配器。 | ||||
| 主分配器 | Unity 进行大多数分配所用的主分配器。 | ||||
| 主线程代码块大小 | 专用主线程分配器的代码块大小。 | | | ||
| 共享线程代码块大小 | 共享线程分配器的代码块大小。 | | | ||
| Gfx 分配器 | Unity 进行与 Gfx 系统相关的 CPU 分配所用的分配器。 | ||||
| 主线程代码块大小 | 专用主线程 Gfx 分配器的代码块大小。 | | | ||
| 共享线程代码块大小 | 共享线程 Gfx 分配器的代码块大小。 | | | ||
| 其他分配器 | |||||
| 文件缓存代码块大小 | 文件缓存有自己的分配器,以避免碎片化。这是其代码块大小。 | | | ||
| 类型树代码块大小 | 类型树有自己的分配器,以避免因许多小分配而导致碎片化。这是其代码块大小。 | | | ||
| 共享存储桶分配器 | 在主分配器之间共享的存储桶分配器。 | ||||
| 存储桶分配器粒度 | 共享分配器中存储桶的步骤大小。 | | | ||
| 存储桶分配器存储桶数量 | 存储桶大小的数量。 | | | ||
| 存储桶分配器代码块大小 | 用于存储桶的内存代码块大小。 | | | ||
| 存储桶分配器代码块计数 | 要分配的最大代码块数。 | | | ||
| 高速性能线程临时分配器 | 用于处理非常短暂的分配的线程本地存储 (TLS) 分配器。 | ||||
| 主线程代码块大小 | 主线程堆栈的初始大小。 | | | ||
| 作业工作程序代码块大小 | Unity 作业系统中每个作业工作程序的大小。 | | | ||
| 后台作业工作程序代码块大小 | 每个后台工作程序的大小。 | | | ||
| 预加载代码块大小 | 预加载管理器堆栈大小。 | | | ||
| 音频工作程序代码块大小 | 每个音频工作程序线程的堆栈大小。 | | | ||
| 云工作程序代码块大小 | 云工作程序线程堆栈大小。 | | | ||
| Gfx 线程代码块大小 | 主渲染线程堆栈大小。 | | | ||
| GI 烘焙代码块大小 | 每个 GI 工作程序线程的堆栈大小。 | | | ||
| 导航网格工作程序代码块大小 | 导航网格工作程序线程堆栈大小。 | | | ||
| 高速线程共享临时分配器 | 用于在线程之间共享的短生命周期分配的快速线性分配器。 | ||||
| 作业分配器代码块大小 | Unity 主要用于作业工作程序线程的循环线性线程分配器。 | | | ||
| 后台作业分配器代码块大小 | 允许更长时间分配的后台工作程序的线性分配器。 | | | ||
| 低内存平台上的作业分配器代码块大小 | 内存小于 2GB 的平台会将此大小用于作业工作程序和后台作业。 | | | ||
| 性能分析器分配器 | Unity 专用于性能分析器的分配器,因此它们不会干扰应用程序的分配模式。 | ||||
| 性能分析器代码块大小 | 性能分析器主要部分的代码块大小。 | | | ||
| 编辑器性能分析器代码块大小 | 性能分析器的编辑器部分的代码块大小。这在玩家身上是不存在的。 | | | ||
| 共享性能分析器存储桶分配器 | 性能分析器和编辑器性能分析器分配器的共享存储桶分配器。 在低内存平台上不存在。 | ||||
| 存储桶分配器粒度 | 共享分配器中存储桶的步骤大小。 | | | ||
| 存储桶分配器存储桶数量 | 存储桶大小的数量。例如,如果值为 4,则大小为 16、32、48 和 64。 | | | ||
| 存储桶分配器代码块大小 | 用于存储桶的内存代码块大小。 | | | ||
| 存储桶分配器代码块计数 | 要分配的最大代码块数。 | | |
存储和读取设置
Unity 将分配器设置存储在 中,这会在构建时使用修改后的设置填充 文件。这意味着新设置将在每次构建时生效。
MemorySettings.assetboot.config在编辑器中, 位于 文件夹中。每次 Unity 导入或更改 时其都会更新。编辑器的新值仅在下次编辑器启动时生效。
boot.configProjectSettingsMemorySettings.asset