Unity GC优化原理及实践-4实践
1.GC原理
(1) 发生GC时,所有线程都必须停止工作。GC不合理的一种表现。
如打开界面初始化界面逻辑的GC、一键添加道具触发红点重新计算的GC。
(2)GC回收的是堆内存
变量定义在for循环外,节约了每次分配栈内存的时间,性能上略优于定义在for循环内。
变量定义在for循环内更符合变量作用域最小原则。
(3) 减少内存碎片。复用堆上的类型如List<T>
2.影响GC性能的主要因素
3.可变参数
4.Condition特性
5.装箱和拆箱
6.避免使用Linq
排序本身会产生GC,以及最后的.ToList()操作
7.使用对象池
避免频繁的创建和释放带来的GC,也是减少碎片
8.字符串
9.匿名方法
匿名函数gc分析:https://www.cnblogs.com/sifenkesi/p/9762183.html
常用于加载资源的回调,传参回调函数
10.协程
12.Unity所有返回是数组的API都会有GC Alloc