【发布时间】:2013-11-22 07:27:11
【问题描述】:
我有一个关于lua表使用的内存泄漏问题,代码如下:
function workerProc()
-- a table holds some objects (userdata, the __gc is implememted correctly)
local objs = {createObj(), createObj(), ...}
while isWorking() do
-- ...
local query = {unpack(objs)}
repeat
-- ...
table.remove(query, queryIndex)
until #query == 0
sleep(1000)
end
end
表objs 使用一些用户数据对象进行初始化,这些对象在while 循环中始终可用,因此不会对这些对象执行gc。在 while 循环中,query 表使用来自objs 的所有元素进行初始化(使用解包函数)。在运行脚本时,我发现内存一直在增加,但是当我注释掉 local query = {unpack(objs)} 时,它就消失了。
我不认为这段代码有内存泄漏问题,因为query var 是本地的,在每次循环迭代后它应该不可用,但事实是。有人知道为什么内存会被那张桌子吞掉吗?
【问题讨论】:
标签: memory memory-leaks lua lua-table