IUnityMemoryManager
内存管理器 API 是一个 C++ 接口,允许您在原生插件在 Unity 外部创建的一组代码,用于在 Unity 中创建功能。您可以在 Unity 中使用两种类型的插件:托管插件(使用 Visual Studio 等工具创建的托管 .NET 程序集)和原生插件(特定于平台的原生代码库)。更多信息
参见 术语表中使用 Unity 的内存管理和内存分析。
此 API 使您能够
与等效的 C++ 内存管理方法相比,这些功能使管理和分析插件的内存分配变得更容易。
插件 API 由 IUnityMemoryManager 接口提供,该接口在 IUnityMemoryManager.h
头文件中声明。该 API 的完整参考可在此文件中找到。要查找头文件
<UnityInstallPath>\Editor\Data\PluginAPI
文件夹中。Contents\PluginAPI
中。您应该熟悉以下概念才能有效地使用此 API
要跟踪插件的内存使用情况,请使用内存分析器包 拍摄快照,然后在所有内存选项卡中打开快照。当您使用 IUnityMemoryManager
分配内存时,内存分析器会在您创建每个分配器时分配的区域和对象名称下显示插件的内存分配。
下面的屏幕截图显示了内存分析器包窗口,其中显示了使用 IUnityMemoryManager
API 分配的内存的原生插件使用的内存。在此示例中,调用了 CreateAllocator 方法,其中 “MyNativePlugin” 为 areaName 参数, “MyPluginAllocator” 为 objectName 参数。有关更多信息,请参阅CreateAllocator。
有关更多信息,请参阅快照。
此 API 使您能够在开发原生插件时使用 Unity 的内存管理系统。这具有上述主要优势,但仍然存在一些限制。Unity 的内存管理系统
由于原生 C++ 中的内存未被管理,因此您需要跟踪应用程序具有的任何内存需求。这包括选择要分配的正确内存量,并确保在不再需要时释放它。
IUnityMemoryManager
API 会影响性能,因为每次分配都需要虚拟调用。为了最大程度地减少这种性能影响,请使用 API 不太频繁地分配更大的内存块。为了处理更小且更频繁的分配,请使用此 API 分配单个更大的块,然后编写您自己的代码来管理此块中的内存。不要将此 API 用于频繁的小型分配。