常量表创建并不会消耗内存。

我的 Lua 程序首先通过声明一个多维表开始:

function love.load()

-- Declare variables

Maximum_X = 32 -- the size of the game map
Maximum_Y = 16

i = 0 -- loop variables
j = 0

-- Create game map

MapTable = {}

for y = 1,Maximum_Y do

    local row = {}

    for x = 1,Maximum_X do

        row[x] = 2 -- instead of using table.insert
    end

    MapTable[y] = row -- instead of using table.insert
end

end

然后,为了实验,我对每一个可能的帧都进行元素声明。

function love.update(dt)

    for y = 1,Maximum_Y do

        local row = {}

        for x = 1,Maximum_X do

            row[x] = 2
        end

        MapTable[y] = row
    end

end

理论上,它会在每一帧创建 16 个 row = {} 空表并用值上传它们,这意味着每秒创建和上传数百个新表。还有更多的操作和上传的表格!

然而,我没有看到任何RAM使用量或处理器使用量的增加。原因是什么?难道不是这样的吗?

点赞
用户2320153
用户2320153

答案来自Mud:

你应该会看到 CPU 和内存都有小的波动。Lua 的内存消耗会随着垃圾(被弃置的、不可达的对象占用的内存)的堆积和回收而上下波动。但你不应该看到太大的波动;你根本没有把它用满。试想一下,在 50 个插件运行的情况下,每帧在“魔兽世界”客户端中创建多少个表格,在 40 人团战中...

2013-08-14 12:40:55