最近看了B站Uinty官方有关性能优化技巧的视频,自己做一些整理。 视频链接: Unite Now - (中文字幕)性能优化技巧(上) Unite Now - (中文字幕)性能优化技巧(下) 堆栈(Stack)和堆积(Heap) 我们先来看下Unity内存中重要的两部分,堆栈和堆积,因为只有了解了它们,我们才能知道应该如何优化内存,提高性能。 堆栈: 堆栈是内存中存储 函数 和 值类型 的地方。 例如我们调用一个函数A,会将这个函数体与函数收到的参数放入到堆栈中,若在函数A中调用函数B,同样会把函数B存放到堆栈中。当函数B运行结束,会将其从堆栈中移除,然后当A运行结束,把A从堆栈中移除。 因此我们在看Debug信息的时候,就会发现Log里面能够做到一层层的方法回溯,方便我们查看整体的调用过程,这也就是 堆栈回溯 。 由于是堆栈的结构,因此不会遇到碎片化或是垃圾收集(GC)的问题。但是可能会碰见堆栈溢出的问题,比如调用了太多的函数导致一直push东西进堆栈,占据越来越多的内存空间,导致 堆栈溢出 。 堆积: 堆积是内存中另一个区域,要比堆栈大,我们将所有的 引用类型 存放在这。通常我们每创建一个新的对象,会在堆积中找到下一个足够存放的空位置,将其存储。但是当我们销毁对象后, 内存空间不会马上释放出来 ,而是标记成未使用,之后垃圾收集器会释放这部分空间。 对象实例化和摧毁的过程其实很慢