lua弱表引用
1、普通垃圾回收
--lua弱表,主要是删除key或者value是table的一种元方法
--元表里的__mode字段包含k或者v;k表示key为弱引用;v表示value为弱引用 local testa = {}
tbl_key = {}
testa[tbl_key] =
tbl_key = {}
testa[tbl_key] = --垃圾回收
collectgarbage() local function PrintInfo() for k, v in pairs(testa) do
print(k, "===", v)
end end PrintInfo()
显示结果:
>lua -e "io.stdout:setvbuf 'no'" "Lua.lua"
table: 004FB890 ===
table: 004FB8E0 ===
>Exit code:
2、设置弱引用为key
local testa = {}
local mt = {__mode = 'k'}
setmetatable(testa,mt)
tbl_key = {}
testa[tbl_key] =
tbl_key = {}
testa[tbl_key] =
--垃圾回收
collectgarbage()
local function PrintInfo()
for k, v in pairs(testa) do
print(k, "===", v)
end
end
PrintInfo()
显示结果:
>lua -e "io.stdout:setvbuf 'no'" "Lua.lua"
table: 006EB930 ===
>Exit code:
通过key的弱引用,覆盖了key为key_table的值;没有其他地方在引用,所以被回收掉了
3、设置弱引用为value
local testa = {}
local mt = {__mode = 'v'}
setmetatable(testa,mt)
tbl_key = {,,}
testa[] = tbl_key
tbl_key = {,,}
testa[] = tbl_key
--垃圾回收
collectgarbage()
local function PrintInfo()
for k, v in pairs(testa) do
for key, value in pairs(v) do
print(" value===", value)
end
end
end
PrintInfo()
结果:
>lua -e "io.stdout:setvbuf 'no'" "Lua.lua"
value===
value===
value===
>Exit code:
转载:http://blog.csdn.net/u012071200/article/details/31400541
lua弱表引用的更多相关文章
- Lua弱表Weak table
定义:弱表的使用就是使用弱引用,很多程度上是对内存的控制. 1.weak表示一个表,它拥有metatable,并且metatable定义了__mode字段. 2.弱引用不会导致对象的引用计数变化.换言 ...
- Step By Step(Lua弱引用table)
Step By Step(Lua弱引用table) Lua采用了基于垃圾收集的内存管理机制,因此对于程序员来说,在很多时候内存问题都将不再困扰他们.然而任何垃圾收集器都不是万能的,在有些特殊情况下,垃 ...
- lua table表
lua table表 语法结构 创建一个 table 直接使用 "{}" 即可 table1 = {} -- 赋值 table1["name"] = " ...
- Java中的软(弱)引用
一.Java中的强.软.弱.虚引用 在JDK中我们能够看到有一个java.lang.ref的包.这个包中就是Java中实现强.软.弱.虚引用的包,例如以下: PhantomReference 虚引用: ...
- JNI/NDK开发指南(十)——JNI局部引用、全局引用和弱全局引用
转自:http://blog.csdn.net/xyang81/article/details/44657385 这篇文章比较偏理论,详细介绍了在编写本地代码时三种引用的使用场景和注意事项.可能看 ...
- Lua 学习之基础篇四<Lua table(表)>
table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型,如:数组.字典等. Lua table 使用关联型数组,你可以用任意类型的值来作数组的索引,但这个值不能是 nil. Lua ta ...
- Lua table(表)
table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型,如:数组.字典等. Lua table 使用关联型数组,你可以用任意类型的值来作数组的索引,但这个值不能是 nil. Lua ta ...
- Lua查找表元素过程(元表、__index方法是如何工作的)
近日开始研究Lua,在元表的使用上照猫画虎地搞了两下,实现了“面向对象”,但究其本质却略有不解,后咨询牛哥得解,特此记录. Lua的表本质其实是个类似HashMap的东西,其元素是很多的Key-Val ...
- C中调用LUA回调(LUA注册表)
实现原理: 通过将LUA中得回调函数存入LUA注册表中来保存LUA函数,然后在需要回调时从LUA注册表中取出LUA函数进行调用 下面是一些预备知识:(学习两个重要的函数) 原汁原味的英文解释的最透彻, ...
随机推荐
- 【总结】matlab求两个序列的相关性
首先说说自相关和互相关的概念. 自相关 在统计学中的定义,自相关函数就是将一个有序的随机变量系列与其自身作比较.每个不存在相位差的系列,都与其都与其自身相似,即在此情况下,自相关函数值最大. 在信号 ...
- 【转载】Python 描述符简介
来源:Alex Starostin 链接:www.ibm.com/developerworks/cn/opensource/os-pythondescriptors/ 关于Python@修饰符的文章可 ...
- FP-tree推荐算法
推荐算法大致分为: 基于物品和用户本身 基于关联规则 基于模型的推荐 基于物品和用户本身 基于物品和用户本身的,这种推荐引擎将每个用户和每个物品都当作独立的实体,预测每个用户对于每个物品的喜好程度,这 ...
- JavaScript中的arguments,callee,caller
在提到上述的概念之前,首先想说说javascript中函数的隐含参数: arguments: arguments 该对象代表正在执行的函数和调用它的函数的参数. [function.]argument ...
- AJAX-创建XMLHttpRequest对象
AJAX-创建XMLHttpRequest对象 1.XMLHttpRequest是AJAX的基础,所有现在浏览器都支持,用于在后台与服务器交换数据,也就意味着可以在不加载整个页面的情况下对整个页面进 ...
- Angular中的Ajax
//我们使用Ajax访问本地或者同域名下的数据或者文件module.controller('InTheatersController',['$scope','$http', function($sco ...
- 为了体验 ILS 在Win2012R2 Hyper-V上安装Windows 2000 AdvSer
Win2012 R2 Hyper-V 的集成服务包已不支持Windows 2000 先安装SP4.IE6.更新汇总包,再来安装这个. 安装完成后,会有几个未知设备,直接禁用就可以了. 开启Window ...
- [转]Django与遗留系统和数据库集成
From:http://www.czug.org/python/django/17.html 尽管Django最适合从零开始开发项目--所谓的"绿色领域"开发--将框架与遗留系统和 ...
- innodb的锁
观察innodb的锁时间,需要关注: mysqladmin extended-status -r -i 1 -uroot | grep "Innodb_row_lock_time" ...
- Python文本处理——中文标点符号处理
中文文本中可能出现的标点符号来源比较复杂,通过匹配等手段对他们处理的时候需要格外小心,防止遗漏.以下为在下处理中文标点的时候采用的两种方法,如有更好的工具,请推荐补充. 中文标点集合 比较常见标点有这 ...