memory - 有可能像这样在 Lua 中死锁内存吗?
问题描述
这两个表都相互引用,但在函数之外的任何其他地方都没有引用。这些表在调用 f() 后会保留在内存中还是会被垃圾回收?
function f()
local t1 = {}
local t2 = {}
t1[1] = t2
t2[1] = t1
end
f()
解决方案
这两个表将被垃圾收集。
t1
并且t2
是本地f
的范围。一旦它们超出范围t1[1]
并且t2[1]
不再存在。
没有更多对剩下的两个表的引用,因此它们有资格进行垃圾收集。
推荐阅读
- azure - 在 Azure Functions 中,我可以将 C# HttpTrigger 与 Python HttpTrigger 结合使用吗
- r - 用 R 在图中突出显示一个句点
- websphere - 相同的代码在一个 Websphere 应用程序服务器环境中抛出 java.io.NotSerializableException 而不是另一个
- functional-programming - 带有方案的纯功能堆栈实现
- sql - 为 1 列中的用户返回多个角色而不是多行
- loops - Lisp 中的子列表
- aws-lambda - 在哪里可以找到 AWS lambda 的 New Relic 上的 CPU 和内存利用率?
- typescript - 在多重继承中执行超类的所有构造函数
- flutter - Flutter 小部件测试在选择另一个项目时不会触发 DropdownButton.onChanged
- flask - 使用 Ssh 将文件从 Gitlab 复制到 EC2 (/www/html) 文件夹