Archive for 十一月 2017

Lua GC算法中是否存在“循环引用”问题

前几周到北京参见Openresty 2017大会,在会上分享了Lua 5.1 GC原理相关的内容。

其中提到,Lua采用的扫描标记算法,较之Python等使用的引用计数算法,不会出现循环引用问题。会后,有人问我其中的原因,一时之间想不太清楚,最近终于有了空闲的时间,可以来整理一下思路了。

还是以代码来说明问题:

--启动gc回收并打印回收结果函数
function memColl()
    print("now collect")
    collectgarbage("collect")
    local c1 = collectgarbage("count")