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")               - 如果垃圾收集器正在运行,则将其停止。

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

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解释器在以后的阶段自动执行。

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

技术教程推荐

AI技术内参 -〔洪亮劼〕

趣谈Linux操作系统 -〔刘超〕

Netty源码剖析与实战 -〔傅健〕

架构实战案例解析 -〔王庆友〕

视觉笔记入门课 -〔高伟〕

人人都用得上的写作课 -〔涵柏〕

讲好故事 -〔涵柏〕

eBPF核心技术与实战 -〔倪朋飞〕

结构执行力 -〔李忠秋〕

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