zoukankan      html  css  js  c++  java
  • lua 中的内存管理: garbage collection

    0 引言

    lua的垃圾回收机制: collectgarbage([opt[,arg]]) 用来控制自动内存管理

    • collectgarbage("collect"): 做一次完整的垃圾收集循环。通过参数 opt 它提供了一组不同的功能:
    • collectgarbage("count"): 以 K 字节数为单位返回 Lua 使用的总内存数。 这个值有小数部分,所以只需要乘上 1024 就能得到 Lua 使用的准确字节数(除非溢出)。
    • collectgarbage("restart"): 重启垃圾收集器的自动运行。
    • collectgarbage("setpause"): 将 arg 设为收集器的 间歇率。 返回 间歇率 的前一个值。
    • collectgarbage("setstepmul"): 返回 步进倍率 的前一个值。
    • collectgarbage("step"): 单步运行垃圾收集器。 步长"大小"由 arg 控制。 传入 0 时,收集器步进(不可分割的)一步。 传入非 0 值, 收集器收集相当于 Lua 分配这些多(K 字节)内存的工作。 如果收集器结束一个循环将返回 true 。
    • collectgarbage("stop"): 停止垃圾收集器的运行。 在调用重启前,收集器只会因显式的调用运行。

    (1)gc自动运行,也可以手动调用;

    (2)自动收集的目标是引用计数为0的对象;

    (3)dead objects:不能访问到的对象,没有引用指向它了,当然就是访问不到的了,也就等同于垃圾内存了。

    1 fulluserdata VS lightuserdata

    class A {
    public:
      A();
      ~A();
    }
    static int A(lua_State *L) {     }
  • 相关阅读:
    $watch和watch属性的使用
    实例方法this.$delete的使用
    实例方法$set的用法
    $nextTick的使用
    vue初始化项目一直停在downloading template的解决办法
    vue小白快速入门
    vue计算属性详解——小白速会
    Nginx在windows环境下的安装与简单配置
    redis持久化
    谈谈区块链正经的商用场景!
  • 原文地址:https://www.cnblogs.com/ghjnwk/p/13938866.html
Copyright © 2011-2022 走看看