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