本文主要是介绍Lua程序设计(五十五),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
垃圾收集
Lua 语言使用自动管理。程序可以创建对象(表、闭包等),但却没有函数来删除对象。Lua 语言通过垃圾收集自动地删除成为垃圾的对象,从而将程序员从内存管理的绝大部分负担中解放出来。同时对于无效指针(dangling pointer) 和内存泄漏(memory leak) 等问题。
弱引用表(weak table)、析构器( finalizer) 和函数 collectgarbage 是在 Lua 语言中用来辅助垃圾收集器的主要机制。若引用表允许收集 Lua 语言中还可以被程序访问的对象; 析构器允许收集不在垃圾收集器直接控制下的外部对象;函数 collectgarbage 则允许我们控制垃圾收集器的步长。
弱引用表
垃圾收集器不能猜测我们认为哪些是垃圾。一个典型的例子就是栈。栈通常由一个数组合一个指向栈顶的索引实现。我们知道,数组的有效部分总是向顶部扩展的, 但 Lua 语言却不知道。 如果弹出一个元素时只是简单地递减顶部索引,那么这个仍然留在数组中的对象对于 Lua 语言来说并不是垃圾。同理,即使是程序不再会用到的,存储在全局变量中的对象,对于 Lua 来说也不是垃圾。在这两种情况下都需要我们显示地将这些对象所在的位置赋值为 nil。
不过,简单地清除引用还不够,在有些情况下
这篇关于Lua程序设计(五十五)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!