我的机器是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?
如何释放或回收它们?
解决方法
我可以重现你的结果.我不确定活动监视器真的报告了什么,但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将内存返回给进程,而不是返回操作系统.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。