首先看一个问题,假如一个table如下:
复制代码
1
2
3
4
5
6local acty = { acty.init = function() acty.id = 1 end }
如果此时这样操作,对内存会有什么影响?
复制代码
1
2
3
4acty.init = function() acty.id = 2 end
实验测试:
定义以下内容
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13local function onParse(acty) acty.init = function() acty.id = 1 end return acty end local function test() acty = {} end test()
此时内存占用1565.498046875k
接下里,连续对acty进行parse,内存占用分别是
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29--1565.69921875k local function test() acty = {} acty = onParse(acty) end --1565.765625k local function test() acty = {} acty = onParse(acty) acty = onParse(acty) end --1566.296875k local function test() acty = {} acty = onParse(acty) acty = onParse(acty) acty = onParse(acty) acty = onParse(acty) acty = onParse(acty) acty = onParse(acty) acty = onParse(acty) acty = onParse(acty) end
可以看出每次执行都进行了内存分配。
所以小伙伴以后写的时候一定注意,如果要更新内容,可以table内部定义update方法,外部直接调用即可。
最后
以上就是温婉老鼠最近收集整理的关于关于lua table重复定义相同内容对内存的影响的全部内容,更多相关关于lua内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复