Lua - 垃圾回收

Lua - 垃圾回收 首页 / Lua入门教程 / Lua - 垃圾回收

Lua使用自动内存管理,该管理使用基于Lua内置的某些算法的垃圾回收。

垃圾收集器暂停

垃圾收集器暂停用于控制垃圾收集器之前需要等待多长时间; Lua的自动内存管理再次调用它。值小于100意味着Lua将不等待下一个周期。同样,此值的较高值将导致垃圾收集器的运行速度变慢。值为200,表示收集器在开始新的循环之前等待使用的总内存增加一倍。因此,根据应用程序的性质和速度,可能需要更改此值以在Lua应用程序中获得最佳性能。

垃圾收集器函数

作为开发人员,无涯教程确实可以控制Lua中的自动内存管理。为此,有以下方法。

  • collectgarbage(" collect")          - 运行一个完整的垃圾回收周期。

  • collectgarbage(" count")            - 返回程序当前使用的内存量(以千字节为单位)。

  • collectgarbage(" restart")          - 如果垃圾收集器已停止,则会重新启动它。

  • collectgarbage(" setpause")      - 将作为第二参数除以100的值设置为垃圾收集器暂停变量。

  • collectgarbage(" setstepmul")  - 将作为第二参数除以100的值设置为垃圾步骤乘数变量。

  • collectgarbage(" step")               - 运行一步垃圾收集。第二个参数越大,此步骤将越大。如果触发的步骤是垃圾收集周期的最后一步,则收集垃​​圾将返回true。

  • collectgarbage(" stop")               - 如果垃圾收集器正在运行,则将其停止。

下面显示了一个使用垃圾收集器示例的简单示例。

链接:https://www.learnfk.comhttps://www.learnfk.com/lua/lua-garbage-collection.html

来源:LearnFk无涯教程网

mytable={"apple", "orange", "banana"}

print(collectgarbage("count"))

mytable=nil

print(collectgarbage("count"))

print(collectgarbage("collect"))

print(collectgarbage("count"))

当运行上面的程序时,将得到以下输出。请注意,此输出将因操作系统类型以及Lua的自动内存管理函数的不同而有所不同。

23.1455078125   149
23.2880859375   295
0
22.37109375     380

您可以在上面的程序中看到,一旦完成垃圾回收,它就会减少所使用的内存。但是,这不是强制性的。即使无涯教程不调用它们,它也会在预定时间后由Lua解释器在以后的阶段自动执行。

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

从0开始学微服务 -〔胡忠想〕

从0开始学大数据 -〔李智慧〕

Web协议详解与抓包实战 -〔陶辉〕

Spring Boot与Kubernetes云原生微服务实践 -〔杨波〕

从0打造音视频直播系统 -〔李超〕

Django快速开发实战 -〔吕召刚〕

编程高手必学的内存知识 -〔海纳〕

反爬虫兵法演绎20讲 -〔DS Hunter〕

云计算的必修小课 -〔吕蕴偲〕

好记忆不如烂笔头。留下您的足迹吧 :)