Version: Unity 6.0 (6000.0)
언어 : 한국어
버킷 할당자
스레드세이프 리니어 할당자

TLS(스레드 로컬 스토리지) 스택 할당자

각 스레드는 임시 할당을 위해 빠른 자체 스택 할당자를 사용합니다. 이러한 할당은 매우 빠르며 수명이 1프레임 미만입니다. 할당자는 LIFO(선입선출) 스택을 사용합니다.

임시 할당자의 기본 블록 크기는 플랫폼의 경우 4MB이고 Unity 에디터의 경우 16MB입니다. 이 값은 커스터마이즈할 수 있습니다.

> 참고: 할당자 사용량이 설정된 블록 크기를 초과하면 Unity는 블록 크기를 늘립니다. 이러한 증가는 원래 크기의 두 배까지로 제한됩니다.

Fast Per Thread Temporary Allocators의 Main Thread Block Size 커스텀 값
Fast Per Thread Temporary Allocators의 Main Thread Block Size 커스텀 값

스레드의 스택 할당자가 가득 차면 할당은 스레드세이프 리니어 할당자로 폴백됩니다. 약간의 오버플로 할당은 괜찮습니다. 여기서 약간이란 한 프레임에 1–10개 또는 로드 중 수백 개 정도를 의미합니다. 그러나 프레임마다 숫자가 증가하면 블록 크기를 늘릴 수 있습니다.

사용량 보고서의 정보는 애플리케이션에 적합한 블록 크기를 선택하는 데 도움이 될 수 있습니다. 예를 들어 다음 메인 스레드 사용 보고서에서 로드 피크는 2.7MB이지만 나머지 프레임은 64KB 미만입니다. 블록 크기를 4MB에서 64KB로 줄이고 로딩 프레임이 할당량을 초과하도록 허용할 수 있습니다.

[ALLOC_TEMP_TLS] TLS Allocator
  StackAllocators :
    [ALLOC_TEMP_MAIN]
      Peak usage frame count: [16.0 KB-32.0 KB]: 802 frames, [32.0 KB-64.0 KB]: 424 frames, [2.0 MB-4.0 MB]: 1 frames
      Initial Block Size 4.0 MB
      Current Block Size 4.0 MB
      Peak Allocated Bytes 2.7 MB
      Overflow Count 0
    [ALLOC_TEMP_Job.Worker 18]

이 두 번째 예시에서 워커 스레드는 대규모 임시 할당에 사용되지 않습니다. 메모리를 절약하려면 워커의 블록 크기를 32KB로 줄이면 됩니다. 이는 각 워커 스레드에 고유한 스택이 있는 멀티 코어 머신에서 특히 유용합니다.

[ALLOC_TEMP_Job.Worker 14]
      Initial Block Size 256.0 KB
      Current Block Size 256.0 KB
      Peak Allocated Bytes 18.6 KB
      Overflow Count 0
버킷 할당자
스레드세이프 리니어 할당자
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961