弱引用

Lua采用了自动内存管理,垃圾回收会自动删除那些已成为垃圾的对象,然而对于用户所认为的垃圾,如 栈 ,Lua却不认为是垃圾而不进行回收。
弱引用table(weak table)就是为这个问题所产生的一种机制,告诉Lua一个引用不该阻碍一个对象的回收。

a = {}
b = {__mode = 'k'}
setmetatable(a,b)       -- 现在‘a’的key就是弱引用
key = {}                       -- 创建第一个key
a[key] = 1
key = {}                       -- 创建第二个key
a[key] = 2
collectgarbage()         -- 强制进行一次垃圾回收
for k, v in pairs(a) do print(v) end
-->2  

__mode:
k -- key值为弱引用
v -- value值为弱引用

metatable = {__mode = 'kv'}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容