1、参考并总结:http://www.cnblogs.com/88999660/archive/2013/03/15/2961663.html
2、垃圾回收System.GC.Collect():
它只针对堆内存,不针对栈内存
原因:1.代码分配内存不合理(恶性的) ,2.一定时间间隔由系统调用(良性的)。
后果:会占用大量CPU,影响帧率,造成游戏卡顿
方案:1)管理对象,避免大量冗余创建,例如string的相加操作会频繁申请内存并施放,导致gc频繁,应该用StringBuilder类型;
2)某些情况下可用结构体替代类,因为结构体放在栈区,栈的分配较快,并且不调用垃圾回收操作,但因为结构体是“传值”操作会导致额外开销,所以只适合与比较小的结构体。
3)策略一:如果堆比较小,则进行快速而频繁的垃圾回收,适用于运行时间较长、频繁地分配小块内存的游戏。
4)策略二:如果堆比较大,则进行缓慢且不频繁的垃圾回收,通常在游戏停顿期间执行。