• lua基础assert和collectgarbage


    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。

  • 相关阅读:
    数据库概念
    Java编程练习01
    MySQL基本操作
    Tomcat配置
    JDK配置
    云谷分布式端口扫描与代理验证系统(一)简介
    测试平台系列(91) 编写oss管理页面
    测试平台系列(88) 完成邮件通知功能(附赠精美邮件模板)
    测试平台系列(90) 编写oss客户端
    测试平台系列(89) 编写执行测试计划功能
  • 原文地址:https://www.cnblogs.com/still-smile/p/13907153.html
Copyright © 2020-2023  润新知