unity降低GC和DC的几个点

降低GC:

1.使用对象池

2.string和StringBuilder的使用

3.减少装箱操作

4.关键帧限制协程调用(startcoroutine()实际上是new一个对象)

5.用for代替foreach(5.5版本以前有装箱操作,会在堆内存上产生一个system.object)

6.struct中不要有引用类型变量(struct是值类型,而如果struct中有引用类型的变量,GC会检查整个struct)【增加GC的方式是让它检查不必检查的对象】

7.主动调用GC

补充:

unity中采用的GC模型是贝姆垃圾回收模型。这意味着该程序会暂停执行过程,释放分配内存,在完成时继续。暂停时间的长短取决于需要解除分配的内存量。

因此,对于需要实时动作或移动的项目,如果该过程发生在游戏期间,这些卡顿会让玩家觉得游戏有延迟。

垃圾回收造成的性能问题特点是,游戏在大多数情况下会流畅的运行,但是会有间歇性中断或者卡顿,这类情况成为GC峰值。

通过使用增量式垃圾回收,使用相同的回收模型,但不会同时处理所有的GC过程,把操作分配到多个帧。尽管增量式垃圾回收会产生少量的开销,但有效的GC时间是相同的,这意味这些操作对玩家不太明显,实现更加流畅的游戏体验。

贝姆垃圾回收:无分代/并行,执行时所有线程阻塞,每次标记可达对象(穷举搜索垃圾)这种方式在短时间内造成帧率下降。

降低DC(drawcall,cpu传给gpu过程):

1.canvas分层,动静分离

2.图集合并

3.网格合批

4.蒙皮合批

5.LOD(level of detail)

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值