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)策略二:如果堆比較大,則進行緩慢且不頻繁的垃圾回收,通常在遊戲停頓期間執行。