我有许多 Lua 脚本与 Objective C 代码一起在 mac Mac OS 应用程序中运行。我的应用程序的内存占用量随着时间的推移不断增加。因此,我决定从我的 Lua 脚本中定期调用 collectgarbage
函数。因为我是 Lua 新手,所以我不确定是否应该在每个脚本中调用它,或者从任何脚本调用它都可以,即它是否从所有打开的 Lua 状态或仅从与当前关联的状态收集垃圾。 Lua 文件?
最佳答案
内存,就像 Lua 中的所有东西一样,是每个 Lua 的状态。不同的 Lua 状态完全是独立的,并且在一个 Lua 状态中所做的任何事情都没有(直接)方式影响另一个 Lua 状态的内容。
而且,Lua 并不真正知道什么是“脚本”。或者一个文件。这只是解释器当前正在执行的代码。它当然不会在每个“脚本”的基础上跟踪内存。
collectgarbage
因此在其所能达到的水平上工作:它从当前 Lua 状态收集垃圾。
关于lua - 运行垃圾收集器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18273123/