0%

Unity_GC_浅谈

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# 非托管内存。

Native Memory 『本机内存』

Unity 应用的 GC 算法

BoehmGC

BoehmGC 算法原理

BoehmGC 的内存管理

BoehmGC 算法实现

MONO 与 IL2CPP 中的 BoehmGC

渐进式 GC

参考资料

  1. Unity 垃圾回收GC的原理?
  2. Unity GC 学习总结
  3. 解读MONO内存管理和回收!
  4. 解读MONO内存管理:BOEHM GC原理及总结
  5. Unity3D托管堆BoehmGC算法学习-内存分配篇
  6. Unity3D托管堆BoehmGC算法学习-垃圾回收篇
  7. 【笔记】Unity内存分配和回收的底层原理
  8. Memory in Unity Unity
  9. Garbage collection (computer science)

欢迎关注我的其它发布渠道