学习Unity内存优化笔记

主要说说Mono托管内存的优化(非托管资源不涉及),其实主要是对GC的优化。

1.内存的分配和回收机制

首先C#数据类型有值类型(int、struct等)和引用类型。

其中值类型分配在堆栈上(不涉及GC),引用类型分配在堆区(涉及GC)。

堆栈上的分配和回收都是简单而且快捷的。
当数据存储的时候,只需要简单的在堆栈后扩展,数据失效的时候,只需要移除即可。
至于在堆区的存储和回收则是复杂而且缓慢的。
当需要在堆区存储一个对象的时候:
1.检查是否有足够的闲置的内存单元,如果有,则分配对应的内存单元。
2.如果没有闲置的内存单元,那么调用GC,它会扫描堆区上所有对象,然后标记那些不被任何其它对象所引用的对象,然后删除这些对象,释放内存空间。
3.如果此时,释放的内存空间还不够,就必须拓展堆区,拓展的大小根据不同平台有不同。

这里要说一下,当一个堆区上的变量使用完毕之后,不会马上释放,而是等待,只有GC的时候才会被回收。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值