Memory management 有没有(简单的)方法来获取Lua表的内存使用率?

Memory management 有没有(简单的)方法来获取Lua表的内存使用率?,memory-management,lua,lua-table,Memory Management,Lua,Lua Table,我想知道一个Lua表正在使用多少内存,而不需要遍历表内容并计算使用量。是否有LUA5.1函数或第三方库可以帮助实现这一点 此任务没有功能。你为什么要这样做?您想实现什么?您可以通过在整个代码的适当位置(例如,插入操作前后)调用collectgarbage(“count”)或gcinfo()来监控Lua的内存使用情况。没有一种简单的方法可以得到一张桌子的大小。这样做会不会有帮助 2016年更新:另请参见:您可以这样做: local pre = collectgarbage("count&

我想知道一个Lua表正在使用多少内存,而不需要遍历表内容并计算使用量。是否有LUA5.1函数或第三方库可以帮助实现这一点

此任务没有功能。你为什么要这样做?您想实现什么?

您可以通过在整个代码的适当位置(例如,插入操作前后)调用
collectgarbage(“count”)
gcinfo(
)来监控Lua的内存使用情况。没有一种简单的方法可以得到一张桌子的大小。

这样做会不会有帮助


2016年更新:另请参见:

您可以这样做:

local pre = collectgarbage("count")
local table = {1, 2, 3, 4, 5}
local aft = collectgarbage("count")

local probablyTableSize = aft - pre
print(probablyTableSize)
但是请注意,我不太确定在有很多事情在后台进行的普通测试环境之外这是否准确。在声明
变量时,添加/删除内存的可能性很小


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

我正在使用一个lua应用程序,它消耗了大量内存,最终耗尽了可用的RAM。坦率地说,这是一个设计缺陷,我可以在源代码中看到问题区域。需要重写/重新思考,但我一个月内都无法开始。在此期间,我正在寻找一个快速修复方法,让客户重新启动并运行。我认为更详细的内存使用情况分类将有助于我决定现在更改/解决哪些部分。您是否尝试过调整垃圾收集或使用紧急垃圾收集修补程序?它非常稳定,对于更多的嵌入式环境(微控制器上的64k SRAM:-)也非常有用。Lua5.2预发布版本也有一个EGC,它不是上面的补丁,但应该提供类似的功能。对于仍在使用的对象,您是否真的用完了所有可用内存?正如您可能在其他回复之一的Lua列表链接中发现的,Lua允许您定义任何您想要的内存分配器。请不要在所有大写字母中写入Lua。它不是首字母缩略词。我会试一试——它可能会给我足够的信息来做决定。如果没有,我将研究亚历山大和詹姆斯的建议。谢谢第二个环节又死了,sadface。