我们项目是Unity+Slua
客户端:
- 界面缓存起来的unity object/ component时, 需要在界面销毁时,把变量置nil
- 同理,全局变量存储unity object/ component更应该避免
- 需要频繁访问的unity object/component,就先缓存起来,用完置nil
- 注意C#和lua闭包相互引用问题,特别是闭包里同时引用着unity object/ component
参考:unity tolua跨语言对象引用原理和内存泄漏问题分析
公共:
- 不建议使用弱引用,不建议使用metatable,不建议使用协程,避免使用面向对象(战斗除外)
- 尽量复用table,能不创建table就不创建
- 做好数据缓存,特别是提供给外部提供的接口,不要每次调用都产生新的table
- 能用ipairs的就别用pairs
- Hash table如果需要判断是否存在元素,应该使用next,而不是for
网友评论