整理自高川(Unity大中华区企业技术支持经理)2019年12月15日在 UUG北京开发者活动 - Unity助力AR创作大赛上的演讲 ,视频地址:
浅谈unity内存管理
Unity内存管理
-
Unity 是一个C++引擎,所有的C#代码都会编译成C++代码
-
主要由三层构成
- 底层Runtime全部有C++构成
- 中层为bonding层(注:不确定是不是这个单词,就是一个粘合层),以前使用Unity自定义的语言,但是因为开发不方便,现在主要使用C#了,作用是将C#和C++连接在一起,大家用到的Unity的API都是在这一层提供的,底层运行的还是C++,这只是一个warpper封装
- 上层就是C#构成的用户代码
- 用户代码在il2cpp模式下会转换为cpp代码
- VM依然存在,il2cpp本身也是一个VM,目的是跨平台
Unity内存分配方式
- Native Memory
- Managed Memory
- Editor
Editor和Runtime是完全不同的,不仅是内存大小不同,分配时机,方式都不同,例如一个asset,在Runti