5
我對LUA表的使用內存泄漏問題,代碼如下: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是本地的,它應該在while循環的每次迭代後都不可用,但事實是。任何人都知道爲什麼內存被這個表所吞噬?
謝謝!我認爲更好的方法是將查詢表移出內部循環。 – Kery