我的机器是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(来自Activity Monitor)
然后我在下面为malloc键入代码......
a = {}
for i = 1, 999999 do
a[i] = {}
end
内存使用量增长到79.0MB
然后我输入以下代码来表示dealloc ...
a = nil
collectgarbage("collect")
内存使用量低至25.0MB
确定。这是我的问题。
为什么剩下25MB?
如何释放或回收它们?
答案 0 :(得分:4)
我可以重现你的结果。我不确定活动监视器真正报告了什么,但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
为什么Activity Monitor仍然报告25Mb打败了我。我认为这只是因为free
将内存返回给进程,而不是返回操作系统。