Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使Lua垃圾收集器更频繁地运行?_Lua_Garbage Collection - Fatal编程技术网

如何使Lua垃圾收集器更频繁地运行?

如何使Lua垃圾收集器更频繁地运行?,lua,garbage-collection,Lua,Garbage Collection,有没有办法让Lua更频繁地收集垃圾 在我的应用程序中,Lua似乎很难释放垃圾,所以内存上升得很高(超过500MB)。内存增长很快,特别是当我在一个大循环中声明许多变量时 我知道我可以手动调用collectgarbage(),但人们说我几乎不应该调用这个函数 因此,我想知道是否有任何选项可以使垃圾收集器自动更频繁地运行 补充:如果没有办法做到这一点,我想知道是否有可能在Lua中获取内存使用情况,以便在需要时调用collectgarbage()。您可以使用collectgarbage来调优GC。通过

有没有办法让Lua更频繁地收集垃圾

在我的应用程序中,Lua似乎很难释放垃圾,所以内存上升得很高(超过500MB)。内存增长很快,特别是当我在一个大循环中声明许多变量时

我知道我可以手动调用
collectgarbage()
,但人们说我几乎不应该调用这个函数

因此,我想知道是否有任何选项可以使垃圾收集器自动更频繁地运行


补充:如果没有办法做到这一点,我想知道是否有可能在Lua中获取内存使用情况,以便在需要时调用
collectgarbage()

您可以使用
collectgarbage
来调优GC。通过将“setpause”或“setstepmul”作为第一个参数传递,可以调整参数

“设置暂停”控制在开始新的循环之前必须分配多少内存。值100表示它将运行每个分配,值200表示它将等待内存加倍

“setstepmul”控制它尝试收集垃圾的“速度”

如果将“count”传递给
collectgarbage
,它将返回使用的内存(以KB为单位)


在C api方面,您使用
int-lua\u-gc(lua\u-State*L,int-what,int-data)
并传递
lua\u-GCSETPAUSE
lua\u-GCSETSTEPMUL
作为调优和传递
lua\u-GCCOUNT
将返回使用的内存。

非常感谢!启动时调用
collectgarbage('setpause',100)
修复了我的问题。你能告诉我如何在luaapi中调用这个函数吗?如果可能的话,我想在C++中调用函数。