Lua gc

本文深入讲解Lua中的垃圾回收机制及如何使用collectgarbage函数控制内存管理。通过实例演示了完整垃圾收集循环、获取内存使用情况等功能,理解Lua内存管理的关键。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引用自 http://www.runoob.com/lua/lua-garbage-collection.html

Lua 提供了以下函数collectgarbage ([opt [, arg]])用来控制自动内存管理:

collectgarbage("collect"): 做一次完整的垃圾收集循环。通过参数 opt 它提供了一组不同的功能:

collectgarbage("count"): 以 K 字节数为单位返回 Lua 使用的总内存数。 这个值有小数部分,所以只需要乘上 1024 就能得到 Lua 使用的准确字节数(除非溢出)。

collectgarbage("restart"): 重启垃圾收集器的自动运行。

collectgarbage("setpause"): 将 arg 设为收集器的 间歇率 (参见 §2.5)。 返回 间歇率 的前一个值。

collectgarbage("setstepmul"): 返回 步进倍率 的前一个值。

collectgarbage("step"): 单步运行垃圾收集器。 步长"大小"由 arg 控制。 传入 0 时,收集器步进(不可分割的)一步。 传入非 0 值, 收集器收集相当于 Lua 分配这些多(K 字节)内存的工作。 如果收集器结束一个循环将返回 true 。

collectgarbage("stop"): 停止垃圾收集器的运行。 在调用重启前,收集器只会因显式的调用运行。
--Lua GC回收

mytable = {"apple", "orange", "banana"}
-- 以 K 字节数为单位返回 Lua 使用的总内存数。 
--这个值有小数部分,所以只需要乘上 1024 
--就能得到 Lua 使用的准确字节数(除非溢出)。
print('1:',collectgarbage("count"))

mytable = nil

print('2:',collectgarbage("count"))--说明没有到循环收集时间

print('3:',collectgarbage("collect"))--立即做一次完整的垃圾收集循环

print('4:',collectgarbage("count"))--减少了一点点垃圾

--输出结果:
1:	20.5185546875
2:	20.5478515625
3:	0
4:	19.3671875(会发现减少了一点点)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值