2013-10-21 66 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