垃圾回收低性能判定:最简单就是游戏运行卡顿,缓慢,也可以可以通过unity cpu usage profiler工具,查看garbage collector,并在层级视图中查看GC.Collect操作的时间消耗占当前帧的总cpu时间消耗比例,如果比例越大说明当前帧内GC.Collect越耗时,此时就必须加以优化GC操作,保持帧率的稳定。
垃圾回收执行过程:轮询内存中所有对象,将不在作用域并且没有引用的对象进行内存回收,并将回收的内存放回内存堆栈里面。
垃圾回收的三种情况:
1.unity不定时的自动调用。
2.代码主动调用。
3.内存分配不足时,执行垃圾回收。
垃圾回收带来的问题:
1.,如果轮询判定回收越久,回收花费的时间也就越大,从而可能造成帧率的下降,游戏表现卡顿,缓慢。
2.回收的内存不够需要分配的内存大小时,就会内存扩容,造成使用的内存占用比实际需要的高,也就是存在内存碎片。
垃圾回收性能优化方案:
1.降低垃圾回收的执行时间和频率,并在不影响游戏性能体验的地方手动调用垃圾回收。
2.降低内存的分配,减少对象的引用,从而提高垃圾回收效率,减少内存碎片。
降低内存分配的优化方案:对满足的内存进行重复利用,如:对象池,清空集合等,否则在内存分配时进行延迟分配或者有条件性分配,从而降低内存的分配以及分配时系统的回收次数。