文档

Unity Engine

Unity Engine

自定义分配器

Customize the allocator types with the Editor or command line.
阅读时间8 分钟最后更新于 1 个月前

**注意:**并非所有平台都支持这项功能。请参阅针对具体平台的文档以了解更多信息。
要自定义分配器设置,可以通过编辑器用户界面 (Editor UI) 编辑可配置的值,也可以将它们作为命令行参数提供。

使用编辑器

  1. 选择项目设置 (Project Settings) > 内存设置 (Memory Settings)。
  2. 选择要编辑的值旁边的锁定图标。

项目设置 (Project Settings) > 内存设置 (Memory Settings),显示对播放器内存设置的选择

注意:请参阅前面的各个分配器部分,查看通过编辑器用户界面 (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: 8388608

Player: 4194304
存储桶分配器代码块计数要分配的最大代码块数。
memorysetup-bucket-allocator-block-count
Editor: 8

Player: 1
高速性能线程临时分配器用于处理非常短暂的分配的线程本地存储 (TLS) 分配器。
主线程代码块大小主线程堆栈的初始大小。
memorysetup-temp-allocator-size-main
Editor: 16777216

Player: 4194304
作业工作程序代码块大小Unity 作业系统中每个作业工作程序的大小。
memorysetup-temp-allocator-size-job-worker
E262144
后台作业工作程序代码块大小每个后台工作程序的大小。
memorysetup-temp-allocator-size-background-worker
32768
预加载代码块大小预加载管理器堆栈大小。
memorysetup-temp-allocator-size-preload-manager
Editor: 33554432

Player: 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: 33554432

Player: 4194304
存储桶分配器代码块计数要分配的最大代码块数。
memorysetup-profiler-bucket-allocator-block-count
Editor: 8

Player: 1
提示:为确保设置能够提高性能,请在进行更改之前和之后对应用程序进行性能分析。有关更多信息,请参阅性能分析器概述页面和性能分析器分析器的包文档。性能分析器分析器支持多帧比较,这对于突出显示分配器性能差异特别有用。还可以检查内存使用情况报告。关闭播放器或编辑器时,日志中会显示这些字段。要查找日志文件,请按照日志文件页面上的说明操作。

存储和读取设置

Unity 将分配器设置存储在
MemorySettings.asset
中,这会在构建时使用修改后的设置填充
boot.config
文件。这意味着新设置将在每次构建时生效。
在编辑器中,
boot.config
位于
ProjectSettings
文件夹中。每次 Unity 导入或更改
MemorySettings.asset
时其都会更新。编辑器的新值仅在下次编辑器启动时生效。