# 线程安全线性分配器

> Inspect the usage reports of the thread safe linear allocator.

Unity 中的工作线程使用循环先进先出 (FIFO) 算法为作业快速、无锁地分配工作缓冲区。作业完成后会处置缓冲区。

此分配器分配内存块，然后在这些内存块中线性分配内存。可用内存块保存在池中。当一个内存块已满后，分配器将从池中获取新的内存块。当分配器不再需要某个内存块中的内存时，它会清除该内存块，然后该内存块返回到可用内存块池中。快速清除分配以使内存块再次可用非常重要，因此作业的分配时间应在几帧内。

您可以自定义内存块大小。分配器根据需要分配最多 64 个内存块。


**编辑器的快速线程共享临时分配器的默认值:**
![](/api/media?file=/engine/6000.0/media/images/Fast_Thread.png)

如果所有内存块都在使用中，或者某个分配对于内存块来说太大，则分配会回退到主堆分配器，这会比作业分配器花费更多时间。少量溢出分配可以接受：一帧中 1 到 10 个，或特别是在加载期间的几百个。如果溢出计数随每帧增加，则可以增加内存块大小以避免回退分配。但是，如果内存块大小增加太多（例如，为了匹配场景加载等事件中的峰值使用量），则可能会在运行期间产生大量不可用的内存。

例如：

```
[ALLOC_TEMP_JOB_4_FRAMES (JobTemp)]
  Initial Block Size 0.5 MB
  Used Block Count 64
  Overflow Count (too large) 0
  Overflow Count (full) 50408
```

在此使用情况报告中，0.5MB 的内存块太小，无法容纳应用程序所需的作业内存，并且分配器已满，导致大量分配溢出。

要检查构建的帧溢出是否足够，请在短时间内运行构建，然后延长运行时间。如果溢出计数保持稳定，则溢出是在加载期间出现的峰值标记。如果溢出计数随着运行时间延长而增加，则构建正在处理每帧溢出。在这两种情况下，都可以增加内存块大小以减少溢出，但加载期间溢出的重要性低于每帧溢出。
