Version: Unity 6.0 (6000.0)
语言 : 中文
Native memory allocator examples
动态堆分配器

双线程分配器

双线程分配器是结合了动态堆存储桶分配器的封装器。更具体地说,它结合了:

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

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

主分配器,共享线程内存块大小为自定义值
主分配器,共享线程内存块大小为自定义值

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

[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) 是删除队列中的项数。主线程必须删除其所做的任何分配。如果另一个线程删除分配,则该分配将添加到队列中。分配在队列中等待主线程将其删除。然后,该分配被视为延迟分配并计数。

Native memory allocator examples
动态堆分配器
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961