首先說一下非常簡單的New GC,創建一個類
public class A
{
string b;
}
在Update函數中這樣調用:
void Update () {
UpdateNewGC();
}
void UpdateNewGC()
{
A a = new A();
}
會產生GC嗎?
答案是肯定的,基於對真理的孜孜不倦的追求,我們用Profiler觀察
那麼要如何避免掉這個GC呢?
首先,確定這個類是不需要拷貝的,或者深拷貝的開銷比較少,然後我們把class改成struct就可以了,因爲結構體是在棧中申請內存的,函數結束結構體就釋放內存了,不會產生GC,如下:
這是關於最簡單的New出來的GC的避免方式,一般項目中,這種GC是最容易幹掉的,但是項目中還有許多地方根本無法發現真正的GC從哪裏冒出來,如果想深入研究,就繼續看下去吧。