# 네이티브 메모리

> Understand how Unity controls memory in its native C++ layer.

> **참고**: 이 섹션의 할당자에 대한 정보는 **네이티브 메모리에만** 적용되고 관리되는 힙에는 **적용되지 않으며**, 이에 대한 내용은 [관리되는 메모리](/engine/6000.0/manual/analysis/performance-memory-overview/managed-memory.md) 섹션에서 다루고 있습니다. 이 섹션에서는 네이티브 메모리 관리 및 할당자에 대한 일반적인 이해를 갖춘 것으로 가정합니다.

애플리케이션은 메모리 할당자를 사용하여 성능과 사용 가능한 메모리 공간의 균형을 맞춥니다. 애플리케이션에 많은 여유 메모리가 있는 경우 씬과 프레임을 로드할 때 더 빠르고 메모리를 많이 사용하는 할당자를 우선적으로 사용할 수 있습니다. 하지만 애플리케이션에 메모리가 제한되어 있으면 더 느린 할당자를 사용하더라도 효율적으로 메모리를 사용해야 합니다. 다양한 프로젝트에서 최상의 성능을 얻을 수 있도록 Unity의 할당자를 각 애플리케이션의 크기와 요구 사항에 맞게 커스터마이즈할 수 있습니다.

Unity에는 5가지의 할당자 유형이 있습니다. 각 유형은 메모리 블록에 할당을 맞추는 알고리즘이 다르므로 각자 다른 할당에 유용합니다. 할당 간의 중요한 차이점은 대개 지속성이나 할당 수명으로, 이는 할당이 어디로 가야 하는지를 결정합니다. 예를 들어 수명이 긴(지속성) 할당은 힙 및 버킷 할당자로 이동하며, 수명이 짧은 할당은 스레드세이프 리니어 및 TLS 할당자로 이동합니다.

다음 표에는 각 할당자 유형의 알고리즘과 용도가 나와 있습니다.

| **할당자 유형**                                                                                                                                   | **알고리즘**                      | **용도**                                                                         |
| -------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------- | ------------------------------------------------------------------------------ |
| [동적 힙(Dynamic heap)](/engine/6000.0/manual/analysis/performance-memory-overview/native-allocators/dynamic-heap-allocator.md)                 | 2단계 분리 맞춤(TLSF)               | • 메인 할당자• Gfx 할당자• Typetree 할당자• 파일 캐시 할당자• 프로파일러 할당자• 에디터 프로파일러 할당자(에디터에만 해당) |
| [버킷(Bucket)](/engine/6000.0/manual/analysis/performance-memory-overview/native-allocators/bucket-allocator.md)                               | 고정된 크기의 무잠금 할당자               | 다음을 위한 소규모 할당용 공유 할당자• 메인 할당자• Gfx 할당자• Typetree 할당자• 파일 캐시 할당자                |
| [듀얼 스레드(Dual thread)](/engine/6000.0/manual/analysis/performance-memory-overview/native-allocators/dual-thread-allocator.md)                 | 크기와 스레드 ID를 기반으로 할당을 리디렉션합니다. | • 메인 할당자• Gfx 할당자• Typetree 할당자• 파일 캐시 할당자                                     |
| [스레드 로컬 스토리지(TLS) 스택](/engine/6000.0/manual/analysis/performance-memory-overview/native-allocators/tls-stack-allocator.md)                   | LIFO 스택                       | 임시 할당                                                                          |
| [스레드세이프 리니어(Threadsafe linear)](/engine/6000.0/manual/analysis/performance-memory-overview/native-allocators/threadsafe-linear-allocator.md) | 라운드 로빈(Round robin) FIFO      | 잡에 데이터를 전달하기 위한 버퍼                                                             |

> **참고**: `-log-memory-performance-stats` 커맨드 라인 인자를 사용한 경우, 이 기술 자료의 예시에서는 플레이어나 에디터를 닫을 때 로그에 기록되는 메모리 사용량 보고서를 사용합니다. 로그 파일을 찾으려면 [로그 파일 페이지](/engine/6000.0/manual/scripting/debugging-and-diagnostics/log-files.md)의 지침을 따르십시오.
