[Unity]Unity性能優化實戰之GC優化(1)

首先說一下非常簡單的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從哪裏冒出來,如果想深入研究,就繼續看下去吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章