如何处理这个lua中的内存泄漏?

我的机器是mac mini(2011)osx10.7.4

首先。 我从lua.org下载lua-5.2.2,解压缩,然后

$ make macosx $ make install 

然后我运行它

 $ lua Lua 5.2.2 Copyright (C) 1994-2013 Lua.org, PUC-Rio > 

内存使用现在是816KB(从活动监视器)

然后我input下面的代码为malloc …

 a = {} for i = 1, 999999 do a[i] = {} end 

内存使用量增长到79.0MB

然后我input下面的代码dealloc …

 a = nil collectgarbage("collect") 

内存使用量降至25.0MB

好。 这是我的问题。

为什么还剩25MB?

如何释放或回收它们?

我可以重现你的结果。 我不确定活动监视器的真实报告,但Lua认为它已经释放了所有的内存:

 collectgarbage("collect") local m0=collectgarbage("count"); print(m0) a = {} for i = 1, 999999 do a[i] = {} end local m1=collectgarbage("count"); print(m1) a = nil collectgarbage("collect") local m2=collectgarbage("count"); print(m2) 

我得到这个输出

 22.55078125 78906.55078125 22.64453125 

为什么活动监视器仍然报告25Mb击败我。 我认为这仅仅是因为回退内存的过程,而不是回到操作系统。