GC

容易产生 GC 的代码

代码每帧都在运行,同时分配临时堆内存。容易 GC,需要尽可能避免。

装箱

值类型隐式转换为引用类型时,将会隐式分配临时内存保存值类型

常出现在

  • 结构体隐式转换为接口,接口是引用类型,触发装箱

  • 结构体在不重写 GetHashCode 和 Equals 等默认方法的情况下调用这些默认方法,将会自动装箱为 System.Object 类型,并调用 System.Object 相应方法

  • 方法指针隐式转换为 Action 或 Func ?

new

每帧的显示分配内存也会装箱

解决方法

核心思路是对象(空间)复用

  • 使用 List.Clear 代替 new List()

  • 使用对象池

最后更新于