JJBB/Assets/XLua/Doc/XLua复杂值类型(struct)gc优化指南.md
2024-08-23 15:49:34 +08:00

1.2 KiB
Raw Permalink Blame History

复杂值类型的gc问题

xLua复杂值类型struct的默认传递方式是引用传递这种方式要求先对值类型boxing传递给lualua使用后释放该引用。由于值类型每次boxing将产生一个新对象当lua侧使用完毕释放该对象的引用时则产生一次gc。 为此xLua实现了一套struct的gc优化方案您只要通过简单的配置则可以实现满足条件的struct传递到lua侧无gc。

struct需要满足什么条件

  1. struct允许嵌套其它struct但它以及它嵌套的struct只能包含这几种基本类型byte、sbyte、short、ushort、int、uint、long、ulong、float、double例如UnityEngine定义的大多数值类型Vector系列QuaternionColor。。。均满足条件或者用户自定义的一些struct
  2. 该struct配置了GCOptimize属性对于常用的UnityEngine的几个structVector系列QuaternionColor。。。均已经配置了该属性这个属性可以通过配置文件或者C# Attribute实现
  3. 使用到该struct的地方需要添加到生成代码列表

如何配置?

XLua的配置.md的GCOptimize章节。