有没有一种(简单的)方式来获取 Lua 表的内存使用情况?

我想找出 Lua 表格使用了多少内存,而无需迭代表格内容并计算使用量。是否有 Lua 5.1 函数或第三方库可以帮助处理这个问题。

原文链接 https://stackoverflow.com/questions/2461932

点赞
stackoverflow用户107090
stackoverflow用户107090

没有这个任务的功能。你为什么要做这个?你想实现什么目标?

2010-03-17 12:59:26
stackoverflow用户282783
stackoverflow用户282783

你可以通过在代码的适当位置调用collectgarbage(“count”)gcinfo()来监视Lua的内存使用情况(例如,在插入操作之前和之后)。获取表的大小没有简单的方法。

2010-03-18 14:42:28
stackoverflow用户6236
stackoverflow用户6236

不会像 这个 或者 这个 帮助吗?

2016 更新:另请参阅:http://www.lua.org/wshop15/Musa2.pdf

2010-03-18 18:52:50
stackoverflow用户12294756
stackoverflow用户12294756

你可以像这样做:

local pre = collectgarbage(“count”)
local table = {12345}
local aft = collectgarbage(“count”)

local probablyTableSize = aft-pre
print(probablyTableSize)

需要注意的是,我不确定这是否精确,除非在具有许多后台进程的纯测试环境中进行。当我们声明“table”变量时,可能添加/删除更多内存的机会很小。

这可能是多余的,但在这种情况下,您可以多次尝试获取平均值或中位数,然后查看发生了什么。

2021-04-22 00:54:22