我的机器是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击败我。 我认为这仅仅是因为回退内存的过程,而不是回到操作系统。