LuaJIT是否支持表的\uuu gc?

LuaJIT是否支持表的\uuu gc?,lua,luajit,Lua,Luajit,Lua5.2(与5.1相反)支持表的_gc LuaJIT借用了这个好功能吗 (我在谷歌上搜索了一下,检查了LuaJIT的,但没有找到答案。)试试看: -- test.lua do local x = setmetatable({},{ __gc = function() print("works") end }) end collectgarbage("collect") collectgarbage("collect") 因此,简短的回答是否定的。可能LuaJIT在关机时不

Lua5.2(与5.1相反)支持表的_gc

LuaJIT借用了这个好功能吗

(我在谷歌上搜索了一下,检查了LuaJIT的,但没有找到答案。)

试试看:

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


因此,简短的回答是否定的。

可能LuaJIT在关机时不需要运行GC循环。更长、分配更重的脚本可能是一个更好的测试。@delnan情况并非如此,但我对答案进行了编辑以明确说明(调用
collectgarbage
两次可确保调用所有终结器)。感谢您解决了这个问题。您对代码的修改仍然没有解决这个问题,因为您没有将“local x”包装为“do…end”因此“x”变量仍然有效,collectgarbage()不会处理此表。
$ 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
$