Version: 2022.3
언어: 한국어
로우레벨 네이티브 플러그인 셰이더 컴파일러 액세스
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에서 메모리 사용 추적

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

아래 스크린샷은 Memory Profiler 패키지 창에서 네이티브 플러그인이 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 레퍼런스