Я столкнулся с несколькими местами, где люди звонят collectgarbage() дважды, чтобы завершить все неиспользуемые объекты.
Почему? Почему не достаточно одного звонка? Почему не три вызова?
Когда я пытаюсь выполнить следующий код (на Lua 5.2), объект будет финализирован (что означает: его __gc
будет вызван) с помощью всего одного вызова collectgarbage
:
do
local x = setmetatable({},{
__gc = function() print("works") end
})
end
collectgarbage()
os.exit()
Означает ли это, что одного вызова достаточно?