• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

lua基础assert和collectgarbage

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

1.assert(a,b)

当a为假(nil或false)时,返回b;当a为真,返回a的执行结果。

2.collectgarbage

collectgarbage("collect"): 做一次完整的垃圾收集循环。为默认参数。

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

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

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

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

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

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

static int luaB_collectgarbage (lua_State *L) {
  static const char *const opts[] = {"stop", "restart", "collect",
    "count", "step", "setpause", "setstepmul",
    "isrunning", NULL};
  static const int optsnum[] = {LUA_GCSTOP, LUA_GCRESTART, LUA_GCCOLLECT,
    LUA_GCCOUNT, LUA_GCSTEP, LUA_GCSETPAUSE, LUA_GCSETSTEPMUL,
    LUA_GCISRUNNING};
  int o = optsnum[luaL_checkoption(L, 1, "collect", opts)];
  int ex = (int)luaL_optinteger(L, 2, 0);
  int res = lua_gc(L, o, ex);
  switch (o) {
    case LUA_GCCOUNT: {
      int b = lua_gc(L, LUA_GCCOUNTB, 0);
      lua_pushnumber(L, (lua_Number)res + ((lua_Number)b/1024));
      return 1;
    }
    case LUA_GCSTEP: case LUA_GCISRUNNING: {
      lua_pushboolean(L, res);
      return 1;
    }
    default: {
      lua_pushinteger(L, res);
      return 1;
    }
  }
}

  

luaL_checkoption:参数检查功能。检查函数参数arg是否为字符串,并在数组中找到该字符串
luaL_optinteger:如果函数参数arg是整数(或可转换为整数),则返回该整数。如果该参数不存在或为nil,则返回。否则,将引发错误。
lua_gc:垃圾收集功能。有10种任务模式。

LUA_GCSTOP:停止垃圾收集器。

LUA_GCRESTART:重启垃圾收集器。

LUA_GCCOLLECT:执行一个完整的垃圾收集周期。

LUA_GCCOUNT:返回Lua当前使用的内存量(以千字节为单位)。

LUA_GCCOUNTB:返回Lua当前使用的内存字节数除以1024的余数。

LUA_GCSTEP:执行一个增量的垃圾收集步骤。

LUA_GCSETPAUSE:将data设置为收集器暂停的新值(参见§2.5),并返回之前的暂停值。

LUA_GCSETSTEPMUL:将data设置为收集器的步骤乘数的新值(参见§2.5),并返回步骤乘数的前一个值。

LUA_GCISRUNNING:返回一个布尔值,它告诉收集器是否正在运行(例如,没有停止)。

lua_pushnumber:释放指定大小的内存,并返回一个该内存的指针。
不难发现,这些函数有一个共同点,都是push,把对应的参数推到堆栈上,和资源回收相关的参数。lua_pushboolean,lua_pushinteger。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
redislua脚本学习发布时间:2022-07-22
下一篇:
Lua小技巧发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap