Lua垃圾收集器自动停止收集

时间:2015-03-06 21:56:31

标签: c++ c lua garbage-collection

我注意到在运行游戏一段时间后,内存消耗开始增加。我设法缩小了问题范围 - 每帧执行一次会导致内存问题:

    lua_newtable(L);
    lua_pop(L, 1);

我添加了一个调试日志来检查Lua正在使用多少内存:

    printf("Memory used: %d\n", lua_gc(L, LUA_GCCOUNT, 0));

这表明内存使用率保持不变大约30秒,随着垃圾收集器的工作而上下移动。然后记忆停止下来。显然垃圾收集器停止工作。

我测试了在每一帧上重置垃圾收集器(可能就不够了),它解决了这个问题。

    lua_gc(L, LUA_GCRESTART, 0);

为什么Lua这样对我?我找不到其他人有同样的问题。

我在Windows上使用Lua 5.1.5。

0 个答案:

没有答案