# 双线程分配器

> Inspect the usage reports of the dual thread allocator.

双线程分配器是结合了[动态堆](/engine/6000.0/manual/analysis/performance-memory-overview/native-allocators/dynamic-heap-allocator.md)和[存储桶](/engine/6000.0/manual/analysis/performance-memory-overview/native-allocators/bucket-allocator.md)分配器的封装器。更具体地说，它结合了：

* 两个动态堆分配器：一个无锁分配器用于主线程，另一个分配器由所有其他线程共享，在分配和取消分配时锁定。Unity 将这些分配器用于对存储桶分配器来说太大的分配。动态堆分配器使用内存块。等于或大于半个内存块的分配将进入虚拟内存系统，而不是动态堆分配器。
* 用于小型分配的存储桶分配器。如果存储桶分配器已满，分配将溢出到动态堆分配器中。

您可以自定义两个动态堆分配器的内存块大小：


**主分配器，共享线程内存块大小为自定义值:**
![](/api/media?file=/engine/6000.0/media/images/Main_Allocator.png)

使用情况报告包含分配器总共三个部分的信息。例如：

```
[ALLOC_DEFAULT] Dual Thread Allocator
  Peak main deferred allocation count 135
    [ALLOC_BUCKET]
      Large Block size 4.0 MB
      Used Block count 1
      Peak Allocated bytes 3.3 MB
    [ALLOC_DEFAULT_MAIN]
      Peak usage frame count: [16.0 MB-32.0 MB]: 8283 frames, [32.0 MB-64.0 MB]: 1 frames
      Requested Block Size 16.0 MB
      Peak Block count 2
      Peak Allocated memory 53.3 MB
      Peak Large allocation bytes 40.2 MB
    [ALLOC_DEFAULT_THREAD]
      Peak usage frame count: [64.0 MB-128.0 MB]: 8284 frames
      Requested Block Size 16.0 MB
      Peak Block count 2
      Peak Allocated memory 78.3 MB
      Peak Large allocation bytes 47.3 MB
```

> **注意**：**峰值主延迟分配计数 (Peak main deferred allocation count)** 是删除队列中的项数。主线程必须删除其所做的任何分配。如果另一个线程删除分配，则该分配将添加到队列中。分配在队列中等待主线程将其删除。然后，该分配被视为延迟分配并计数。
