注意:并非所有平台都支持这项功能。请参阅针对具体平台的文档以了解更多信息。
要自定义分配器设置,可以通过编辑器用户界面 (Editor UI) 编辑可配置的值,也可以将它们作为命令行参数提供。
注意:请参阅前面的各个分配器部分,查看通过编辑器用户界面 (Editor UI) 可自定义的字段。
要查找要更改的分配器参数的名称,请查看编辑器和播放器在启动时打印的分配器设置列表。例如,要更改主堆分配器的代码块大小,请使用 -memorysetup-main-allocator-block-size=<new_value>
分配器参数名称及其默认值:
|分配器 |||描述|参数名称|默认值|
|:—|:—|:—|:–|—|:–|
|主分配器|||Unity 进行大多数分配所用的分配器。|
||主分配器||Unity 进行大多数分配所用的主分配器。|
|
| |主线程代码块大小|专用主线程分配器的代码块大小。|memorysetup-main-allocator-block-size|16777216|
|
| |共享线程代码块大小|共享线程分配器的代码块大小。|memorysetup-thread-allocator-block-size|16777216|
||Gfx 分配器||Unity 进行与 Gfx 系统相关的 CPU 分配所用的分配器。|
|
| |主线程代码块大小|专用主线程 Gfx 分配器的代码块大小。|memorysetup-gfx-main-allocator-block-size|16777216|
|
| |共享线程代码块大小|共享线程 Gfx 分配器的代码块大小。|memorysetup-gfx-thread-allocator-block-size|16777216|
|
|其他分配器|||
|
| |文件缓存代码块大小|文件缓存有自己的分配器,以避免碎片化。这是其代码块大小。|memorysetup-cache-allocator-block-size|4194304|
|
| |类型树代码块大小|类型树有自己的分配器,以避免因许多小分配而导致碎片化。这是其代码块大小。|memorysetup-typetree-allocator-block-size|2097152|
|
|共享存储桶分配器||在主分配器之间共享的存储桶分配器。|
|
| |存储桶分配器粒度|共享分配器中存储桶的步骤大小。|memorysetup-bucket-allocator-granularity|16|
|
| |存储桶分配器存储桶数量|存储桶大小的数量。|memorysetup-bucket-allocator-bucket-count|8|
|
| |存储桶分配器代码块大小|用于存储桶的内存代码块大小。|memorysetup-bucket-allocator-block-size|Editor: 8388608Player: 4194304|
|
| |存储桶分配器代码块计数|要分配的最大代码块数。|memorysetup-bucket-allocator-block-count|Editor: 8Player: 1|
|高速性能线程临时分配器|||用于处理非常短暂的分配的线程本地存储 (TLS) 分配器。|
||主线程代码块大小||主线程堆栈的初始大小。|memorysetup-temp-allocator-size-main|Editor: 16777216Player: 4194304|
||作业工作程序代码块大小||Unity 作业系统中每个作业工作程序的大小。|memorysetup-temp-allocator-size-job-worker|E262144|
||后台作业工作程序代码块大小||每个后台工作程序的大小。|memorysetup-temp-allocator-size-background-worker|32768|
||预加载代码块大小||预加载管理器堆栈大小。|memorysetup-temp-allocator-size-preload-manager|Editor: 33554432Player: 262144|
||音频工作程序代码块大小||每个音频工作程序线程的堆栈大小。|memorysetup-temp-allocator-size-audio-worker|65536|
||云工作程序代码块大小||云工作程序线程堆栈大小。|memorysetup-temp-allocator-size-cloud-worker|32768|
||Gfx 线程代码块大小||主渲染线程堆栈大小。|memorysetup-temp-allocator-size-gfx|262144|
||GI 烘焙代码块大小||每个 GI 工作程序线程的堆栈大小。|memorysetup-temp-allocator-size-gi-baking-worker|262144|
||导航网格工作程序代码块大小||导航网格工作程序线程堆栈大小。|memorysetup-temp-allocator-size-nav-mesh-worker|65536|
|高速线程共享临时分配器|||用于在线程之间共享的短生命周期分配的快速线性分配器。|
||作业分配器代码块大小||Unity 主要用于作业工作程序线程的循环线性线程分配器。|memorysetup-job-temp-allocator-block-size|2097152|
||后台作业分配器代码块大小||允许更长时间分配的后台工作程序的线性分配器。|memorysetup-job-temp-allocator-block-size-background|21048576|
||低内存平台上的作业分配器代码块大小||内存小于 2GB 的平台会将此大小用于作业工作程序和后台作业。|memorysetup-job-temp-allocator-reduction-small-platforms|262144|
|性能分析器分配器|||Unity 专用于性能分析器的分配器,因此它们不会干扰应用程序的分配模式。|
||性能分析器代码块大小||性能分析器主要部分的代码块大小。|memorysetup-profiler-allocator-block-size|16777216|
||编辑器性能分析器代码块大小||性能分析器的编辑器部分的代码块大小。这在玩家身上是不存在的。|memorysetup-profiler-editor-allocator-block-size|1048576|
||共享性能分析器存储桶分配器||性能分析器和编辑器性能分析器分配器的共享存储桶分配器。
在低内存平台上不存在。|||
|
| |存储桶分配器粒度|共享分配器中存储桶的步骤大小。|memorysetup-profiler-bucket-allocator-granularity|16|
|
| |存储桶分配器存储桶数量|存储桶大小的数量。例如,如果值为 4,则大小为 16、32、48 和 64。|memorysetup-profiler-bucket-allocator-bucket-count|8|
|
| |存储桶分配器代码块大小|用于存储桶的内存代码块大小。|memorysetup-profiler-bucket-allocator-block-size|Editor: 33554432Player: 4194304|
|
| |存储桶分配器代码块计数|要分配的最大代码块数。|memorysetup-profiler-bucket-allocator-block-count|Editor: 8Player: 1|
提示:为确保设置能够提高性能,请在进行更改之前和之后对应用程序进行性能分析。有关更多信息,请参阅性能分析器概述页面和性能分析器分析器的包文档。性能分析器分析器支持多帧比较,这对于突出显示分配器性能差异特别有用。还可以检查内存使用情况报告。关闭播放器或编辑器时,日志中会显示这些字段。要查找日志文件,请按照日志文件页面上的说明操作。
Unity 将分配器设置存储在 MemorySettings.asset 中,这会在构建时使用修改后的设置填充 boot.config 文件。这意味着新设置将在每次构建时生效。
在编辑器中,boot.config 位于 ProjectSettings 文件夹中。每次 Unity 导入或更改 MemorySettings.asset 时其都会更新。编辑器的新值仅在下次编辑器启动时生效。