ich ein Speicherleck Frage über die Verwendung von lua Tabelle haben, ist der folgende Code:Lua Tabellenspeicherleck?
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
der Tabelle objs
mit einigen Userdatenobjekten und diese Objekte sind immer verfügbar in der while-Schleife wird nicht gc so initialisiert an diesen Objekten durchgeführt. In der while-Schleife wird die query
Tabelle mit allen Elementen aus objs
initialisiert (entpacken Sie die Funktion). Während ich das Skript ausgeführt habe, habe ich festgestellt, dass der Speicher weiter steigt, aber wenn ich local query = {unpack(objs)}
auskommentiere, verschwindet es.
Ich glaube nicht, dieses Stück Code haben Problem Speicherleck verursachen die query
var lokal ist, und es sollte nach jeder Iteration der while-Schleife, aber die Tatsache ist, nicht zur Verfügung. Wer weiß, warum die Erinnerung von diesem Tisch verschluckt wird?
Danke! Ich denke, der bessere Weg ist, die Abfragetabelle aus der inneren Schleife zu entfernen. – Kery