Unity内存管理笔记

这篇博客详细介绍了Unity的内存管理,包括Unity的三层架构、内存分配方式(Native Memory和Managed Memory)、内存管理策略以及Unity监测不到的内存。Unity的内存管理涉及C#、C++和il2cpp,重点关注Native Memory中的Scene、Audio、AssetBundle、Texture和Mesh的优化,以及托管部分的GC机制和内存碎片化问题。建议使用Destroy而不是Null,避免闭包和匿名函数产生的内存占用,并合理使用配置表和Singleton模式。

整理自高川(Unity大中华区企业技术支持经理)2019年12月15日在 UUG北京开发者活动 - Unity助力AR创作大赛上的演讲 ,视频地址:
浅谈unity内存管理

Unity内存管理

  • Unity 是一个C++引擎,所有的C#代码都会编译成C++代码

  • 主要由三层构成

  1. 底层Runtime全部有C++构成
  2. 中层为bonding层(注:不确定是不是这个单词,就是一个粘合层),以前使用Unity自定义的语言,但是因为开发不方便,现在主要使用C#了,作用是将C#和C++连接在一起,大家用到的Unity的API都是在这一层提供的,底层运行的还是C++,这只是一个warpper封装
  3. 上层就是C#构成的用户代码
  • 用户代码在il2cpp模式下会转换为cpp代码
  • VM依然存在,il2cpp本身也是一个VM,目的是跨平台
Unity内存分配方式
  • Native Memory
  • Managed Memory
  • Editor
    Editor和Runtime是完全不同的,不仅是内存大小不同,分配时机,方式都不同,例如一个asset,在Runtime下,不主动load,不会进内存,Editor下,只要打开Unity,就可能会加载进内存,这种策略是为了保证编辑时的流畅,这种策略也导致首次打开Unity项目耗时特别长,会转换资源,再load相关资源,在2019.3中有了新的策略,按需导入和加载
Unity内存管理方式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值