返回

急问,有关android和luajit调用的问题

你好,云风大大,有个问题想请教你一下。

我们有个项目,是在android平台上实现的,会用到lua脚本的执行,最近我们把原生lua换成了luajit,但出了一个问题。

我们在每段lua脚本执行时,都可能会在C中定义一些对象,同时给它们加上gc的方法。这样,在新的lua脚本执行时,都会释放上个脚本定义的C对象。

在使用原生lua时,系统运行一切正常。但在android 4.0系统下,luajit会在多次执行luaL_loadbuffer的时候崩溃,而在android 4.0以下系统上并不会。

调试时我发现,原生lua每次通过luaL_loadbuffer执行新lua脚本时,都能很成功的释放上个脚本的所有C对象。而使用luajit时,并不会完全释放,而有可能会等到执行了多个脚本之后才释放。

我开始是认为没有及时gc导致的问题,就加了个手动gc的方法,可问题依旧出现。后来尝试去掉gc的方法,还是不行。

现在只知道是在luajit gc的过程中出了问题,可不知道哪里出的问题。我们系统用Java通过jni调用的c,调试起来很麻烦,无法深入到luajit的源码中区调试。

云风大大,对于这个问题,你有什么看法么?

名字: 自动排版 密码:

回复 | (2779) | 想飞的鱼 | 2014-07-31 11:05:25