我是靠谱客的博主 温婉老鼠,这篇文章主要介绍关于lua table重复定义相同内容对内存的影响,现在分享给大家,希望可以做个参考。

首先看一个问题,假如一个table如下:

复制代码
1
2
3
4
5
6
local acty = { acty.init = function() acty.id = 1 end }

如果此时这样操作,对内存会有什么影响?

复制代码
1
2
3
4
acty.init = function() acty.id = 2 end

实验测试:

定义以下内容

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
local 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内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(88)

评论列表共有 0 条评论

立即
投稿
返回
顶部