我在lua代码中有内存泄漏问题吗?(lua表)

以下是我的代码示例:

listOfPeople = {}
listOfPeople["test"] = "hello"
listOfPeople = nil

"hello"字符串是否会丢失并导致内存泄漏?

谢谢

点赞
用户1442917
用户1442917

不会导致内存泄漏(假设 Lua 解释器没有 bug),但是内存只有在垃圾回收器运行其(完整)周期后才被释放。你可以通过以下脚本查看效果:

collectgarbage()
print(collectgarbage("count"))
listOfPeople = {}
listOfPeople["test"] = "hello"
print(collectgarbage("count"))
listOfPeople = nil
collectgarbage()
print(collectgarbage("count"))

在 Lua 5.2 中,会打印以下内容:

14.5107421875   523
14.6533203125   669
14.5107421875   523

正如你所看到的,解释器使用的内存增加了(用于存储其中的表和两个字符串),当这些元素的内存被垃圾回收时,内存又会回到原来的大小。

2016-08-20 01:16:55