在对某些个人(平凡)项目进行LuaJ试验时,我发现我似乎无法在表格元数据中使用__gc
,如下例所示:
do
local tbl = {id="tblID"}
setmetatable(tbl,{__gc=function(self) print("gc'd :"..self.id) end })
print(tbl.id)
end
collectgarbage('collect')
虽然我在LuaJ中意识到collectgarbage()
是一个冗余函数调用,但由于LuaJ依赖于Java自己的垃圾收集,我将其包含在内,因为其他一些解释器似乎需要它(例如Lua&# 39; s拥有http://www.lua.org/cgi-bin/demo)
给出的示例似乎在上面提供的在线解释器中起作用。
我现在假设错误是以某种方式使用LuaJ,或者在程序执行结束时发生垃圾收集而不是在收集的对象上调用__gc元方法。
我已经尝试在应用程序结束之前通过在调用之后提供冗长的等待时间以及调用System.gc()
来为Java提供足够的时间来表格。
建议将垃圾收集到运行时,目前都无济于事。