2013-10-21 103 views

回答

9

試試看:

-- test.lua 
do 
    local x = setmetatable({},{ 
    __gc = function() print("works") end 
    }) 
end 
collectgarbage("collect") 
collectgarbage("collect") 

$ lua51 -v 
Lua 5.1.5 Copyright (C) 1994-2012 Lua.org, PUC-Rio 
$ lua51 test.lua 
$ lua52 -v 
Lua 5.2.2 Copyright (C) 1994-2013 Lua.org, PUC-Rio 
$ lua52 test.lua 
works 
$ luajit -v 
LuaJIT 2.0.2 -- Copyright (C) 2005-2013 Mike Pall. http://luajit.org/ 
$ luajit test.lua 
$ 

所以簡短的回答是否定的。

+1

LuaJIT可能在關機時不會打擾運行GC循環。更長,更重的分配腳本可能是更好的測試。 – delnan

+2

@delnan這不是發生了什麼,但我編輯了我的答案,使其明確(調用'collectgarbage'兩次確保所有終結器被調用)。 – catwell

+1

感謝您解決它。 – delnan