记录一次ToLua内存泄漏的检查
在Unity里引入了ToLua之后,有些游戏资源一直驻留在内存里。最近就开始找了些工具(如LuaProfiler,UWA)来跟踪lua table的生命周期,结果是没有发现异常。 然后还是不断删减代码,反复比较运行的结果,来查找内存没有释放的原因。 简单的模型像下面这样,一个游戏对象里绑定了两个组件,其中LuaBehaviour引用了lua环境里的table。 GameObject |-- SpriteRenderer |-- LuaBehaviour |-- LuaTable LuaTable |-- self.spriteRenderer 同时地LuaTable里又持有这个游戏对象下面的SpriteRenderer组件的引用。下图显示的是LuaTable在引用C#对象时会为这一对象生成一个lua_userdata的数据结构。...
Read more