linux – 如何在lua中处理这个内存泄漏?
发布时间:2021-01-02 06:45:04 所属栏目:Linux 来源:网络整理
导读:我的机器是mac mini(2011)osx10.7.4 首先.我从lua.org下载lua-5.2.2,解压缩它,然后 $make macosx$make install 然后我跑了 $luaLua 5.2.2 Copyright (C) 1994-2013 Lua.org,PUC-Rio 现在的内存使用量为816KB(来自Activity Monitor) 然后我输入以下代码用于ma
我的机器是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将内存返回给进程,而不是返回操作系统. (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |