lua assert collectgarbage

原文地址http://www.daileinote.com/computer/lua/07

assert (v [, message])

断言,主要是用来输出错误当v为false或nil时,message可选默认为assertion failed
当v为true时返回v,和message两个参数

例子

assert(1>10)
--输出如下
--[[
lua: tmp.lua:1: assertion failed!
stack traceback:
	[C]: in function 'assert'
	tmp.lua:1: in main chunk
	[C]: ?
--]]

 

collectgarbage ([opt [, arg]])

垃圾回收,除了c/c++等语言,一般不需要手动释放内存编程语言都具备垃圾回收功能来避免内存耗尽,lua中的collectgarbage函数是给用户来手动控制垃圾回收,一般情况下建议不要手动调用,因为lua会帮我们完成。

opt
"collect"       从头到尾走一遍垃圾回收流程.
"stop"          停止垃圾回收(如果正在进行)
"restart"       重新启动垃圾回收(如果已经停止)
"count"         返回lua吃掉的内存(单位K)
"step"           执行垃圾回收步骤,大小由arg参数决定(越大代表步骤越多,不特定),如果你想控制步骤大小,你必须传不同的arg来试验,当返回true时表示回收完成
"setpause"   把传入的参数arg设置为新的收集器的暂停值,返回老的暂停值
"setstepmul" 把传入的参数arg设置为新的收集器的倍增值,返回之前的步骤值

例子

local url = 'www.freecls.com'

local mem_use = collectgarbage('count')
print(mem_use)      --28.9345703125

local t = {}
for i=1,1000 do
    table.insert(t,i)
end

local mem_use = collectgarbage('count')
print(mem_use)      --45.0341796875

--手动回收内存,
collectgarbage('collect')

--这时候t这个表格还没有释放,所以回收不了多少
local mem_use = collectgarbage('count')
print(mem_use)      --43.267578125

t = nil

--手动回收内存
collectgarbage('collect')

--由于t为nil所以回收器会回收之前t所占用的内存
--所以内存又回到了初始的时候的大小
local mem_use = collectgarbage('count')
print(mem_use)      --27.205078125

 

总结

1.本文只是对断言,垃圾回收做简单的介绍,如果有疑问可以给我留言
2.lua的版本为5.1,运行环境centos7 64位
3.原文地址http://www.daileinote.com/computer/lua/07

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值