Unity 底层的内存分配
托管内存
Mono 和 IL2CPP 的脚本虚拟机(virtual machines => VMs)实现了托管内存系统(脚本内存系统)。这些VMs提供了数种受控内存环境。
Managed Heap 『托管堆』
GC 自动控制的内存区域。
Scripting Stack 『脚本栈』
在应用程序进入和退出任何代码范围时构建和展开
Native VM Memory 『本地虚拟机内存』
包含与 Unity 脚本层相关的内存,大多数情况下不需要主动管理。
C# 非托管内存
允许编写 C# 代码来访问本机内存以微调内存分配。
可以使用 Unity 核心 API 中的 Unity.Collections 命名空间(包括 NativeArray)和 Unity Collections 包中的数据结构来访问 C# 非托管内存。如果使用 Unity 的 C# Job 系统或 Burst,则必须使用 C# 非托管内存。