Version: Unity 6.0 (6000.0)
언어 : 한국어
로우레벨 네이티브 플러그인 셰이더 컴파일러 액세스
IUnityMemoryManager API 레퍼런스

로우레벨 네이티브 플러그인을 위한 메모리 관리자 API

IUnityMemoryManager 메모리 관리자 API는 네이티브 플러그인에서 Unity의 메모리 관리 및 메모리 프로파일링을 사용할 수 있는 C++ 인터페이스입니다.

이 API를 통해 다음이 가능합니다.

  • 메모리 할당자를 통해 Unity의 메모리 관리자에 액세스
  • Unity의 메모리 프로파일러 패키지를 통해 플러그인의 메모리 사용량 추적

이러한 기능을 사용하면 동등한 C++ 메모리 관리 메서드와 비교했을 때 플러그인의 메모리 할당을 더 쉽게 관리하고 프로파일링할 수 있습니다.

플러그인 API는 IUnityMemoryManager.h 헤더에 선언된 IUnityMemoryManager 인터페이스를 통해 제공됩니다. API 대한 전체 레퍼런스는 이 파일에서 확인할 수 있습니다. 헤더 파일을 찾는 법은 다음과 같습니다.

  • Windows의 경우 Unity는 헤더를 Unity 설치의 <UnityInstallPath>\Editor\Data\PluginAPI 폴더에 저장합니다.
  • macOS에서는 Unity 애플리케이션을 마우스 오른쪽 버튼으로 클릭해 Show Package Contents를 선택합니다. 헤더는 Contents\PluginAPI에 있습니다.

이 API를 효과적으로 사용하려면 다음 개념을 숙지하고 있어야 합니다.

Unity에서 메모리 사용 추적

플러그인의 메모리 사용량을 추적하려면 메모리 프로파일러 패키지를 사용하여 스냅샷을 얻은 다음, All Of Memory 탭에서 해당 스냅샷을 엽니다. IUnityMemoryManager를 사용하여 메모리를 할당하면 메모리 프로파일러는 각 할당자를 생성할 때 지정한 영역과 오브젝트 이름 아래에 플러그인의 메모리 할당을 표시합니다.

아래 스크린샷은 네이티브 플러그인이 IUnityMemoryManager API로 할당받은 메모리에서 사용하는 메모리 양이 메모리 프로파일러 패키지 창에 표시되는 모습입니다. 이 예시에서는 CreateAllocator 메서드가 호출되었으며, “MyNativePlugin\”을 areaName 파라미터로, “MyPluginAllocator\”를 objectName 파라미터로 사용했습니다. 자세한 내용은 CreateAllocator를 참고하십시오.

플러그인 백엔드 할당자라는 사용자 정의 할당자가 사용하는 메모리를 표시하는 Memory Profiler 패키지 창.
플러그인 백엔드 할당자라는 사용자 정의 할당자가 사용하는 메모리를 표시하는 Memory Profiler 패키지 창.

자세한 내용은 스냅샷을 참고하십시오.

메모리 관리 한도

이 API를 사용하면 네이티브 플러그인을 개발할 때 Unity의 메모리 관리 시스템을 사용할 수 있습니다. 이를 통해 위에서 설명한 것처럼 많은 장점을 누릴 수 있으나, 다음과 같은 Unity의 메모리 관리 시스템의 특성으로 인한 한계도 존재합니다.

  • 자동으로 관리되지 않으므로 사용자가 직접 메모리를 할당하고 할당 해제해야 합니다.
  • 가비지 컬렉터(Garbage Collector)가 추적 및 청소하지 않습니다.

네이티브 C++의 메모리는 관리되지 않으므로 애플리케이션의 모든 메모리 요구 사항을 직접 추적해야 합니다. 예컨대 적합한 용량의 메모리를 직접 할당하고, 메모리가 더 이상 필요하지 않을 때는 할당을 직접 해제해야 합니다.

IUnityMemoryManager API는 각 할당에 가상 호출을 요구하므로 성능에 영향을 미칩니다. 이러한 성능 영향을 최소화하려면 API를 사용하여 메모리 블록을 크기를 키우고 할당 빈도를 줄이십시오. 더 작은 크기의 할당을 빈번하게 처리하려면, 이 API를 사용하여 하나의 큰 블록을 할당하고 해당 블록 내에서 메모리를 관리하는 자체 코드를 작성하십시오. 이 API로 작은 크기의 메모리를 빈번하게 할당하지 마십시오.

추가 리소스

로우레벨 네이티브 플러그인 셰이더 컴파일러 액세스
IUnityMemoryManager API 레퍼런스