IUnityMemoryManager 메모리 관리자 API는 네이티브 플러그인에서 Unity의 메모리 관리 및 메모리 프로파일링을 사용할 수 있는 C++ 인터페이스입니다.
이 API를 통해 다음이 가능합니다.
이러한 기능을 사용하면 동등한 C++ 메모리 관리 메서드와 비교했을 때 플러그인의 메모리 할당을 더 쉽게 관리하고 프로파일링할 수 있습니다.
플러그인 API는 IUnityMemoryManager.h 헤더에 선언된 IUnityMemoryManager 인터페이스를 통해 제공됩니다. API 대한 전체 레퍼런스는 이 파일에서 확인할 수 있습니다. 헤더 파일을 찾는 법은 다음과 같습니다.
<UnityInstallPath>\Editor\Data\PluginAPI 폴더에 저장합니다.Contents\PluginAPI에 있습니다.이 API를 효과적으로 사용하려면 다음 개념을 숙지하고 있어야 합니다.
플러그인의 메모리 사용량을 추적하려면 메모리 프로파일러 패키지를 사용하여 스냅샷을 얻은 다음, All Of Memory 탭에서 해당 스냅샷을 엽니다. IUnityMemoryManager를 사용하여 메모리를 할당하면 메모리 프로파일러는 각 할당자를 생성할 때 지정한 영역과 오브젝트 이름 아래에 플러그인의 메모리 할당을 표시합니다.
아래 스크린샷은 네이티브 플러그인이 IUnityMemoryManager API로 할당받은 메모리에서 사용하는 메모리 양이 메모리 프로파일러 패키지 창에 표시되는 모습입니다. 이 예시에서는 CreateAllocator 메서드가 호출되었으며, “MyNativePlugin\”을 areaName 파라미터로, “MyPluginAllocator\”를 objectName 파라미터로 사용했습니다. 자세한 내용은 CreateAllocator를 참고하십시오.
자세한 내용은 스냅샷을 참고하십시오.
이 API를 사용하면 네이티브 플러그인을 개발할 때 Unity의 메모리 관리 시스템을 사용할 수 있습니다. 이를 통해 위에서 설명한 것처럼 많은 장점을 누릴 수 있으나, 다음과 같은 Unity의 메모리 관리 시스템의 특성으로 인한 한계도 존재합니다.
네이티브 C++의 메모리는 관리되지 않으므로 애플리케이션의 모든 메모리 요구 사항을 직접 추적해야 합니다. 예컨대 적합한 용량의 메모리를 직접 할당하고, 메모리가 더 이상 필요하지 않을 때는 할당을 직접 해제해야 합니다.
IUnityMemoryManager API는 각 할당에 가상 호출을 요구하므로 성능에 영향을 미칩니다. 이러한 성능 영향을 최소화하려면 API를 사용하여 메모리 블록을 크기를 키우고 할당 빈도를 줄이십시오. 더 작은 크기의 할당을 빈번하게 처리하려면, 이 API를 사용하여 하나의 큰 블록을 할당하고 해당 블록 내에서 메모리를 관리하는 자체 코드를 작성하십시오. 이 API로 작은 크기의 메모리를 빈번하게 할당하지 마십시오.