首先说一下非常简单的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从哪里冒出来,如果想深入研究,就继续看下去吧。
转载请注明原文地址: https://ju.6miu.com/read-14449.html