弱引用

作者: sakura_1 | 来源:发表于2020-01-09 16:43 被阅读0次

    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'}
    

    相关文章

      网友评论

          本文标题:弱引用

          本文链接:https://www.haomeiwen.com/subject/njgblftx.html