Lua 中的引用计数是什么?

为什么我仍然可以打印出 'a' 而不是 'b[1]'? 另外,在 Lua 参考手册中我看到了 "弱引用被垃圾回收器忽略"。如何定义 "忽略"?

点赞
用户3204551
用户3204551

关于赋值( = )在 Lua 中的作用,它只会将值赋给某个对象,不会创建别名。因此,当你将 b[1] 赋值给 a 之后,你将 nil 赋值给 b[1] 并不会影响 a


关于你的垃圾回收(GC)问题:

在你的代码片段中,只有强引用,没有弱引用。而被忽略的意思是在确定生命周期时不会被追踪。当然,如果目标无法访问,那么它肯定会在被声明不可达时被置为 nil

Lua 采用的是追踪垃圾回收(tracing GC),而不是引用计数垃圾回收,在处理循环引用问题时更加有效。

2015-01-29 09:08:35