Lua表格内存?

5
这可能有点奇怪的问题,但是我在填充包含14百万项目的表后遇到了内存错误,这引起了我的好奇心。
Lua表的内存限制是固定的吗?还是有些动态的呢?我认为Lua本身通常会分配大量内存,并且当用尽时会抛出错误,但这只是一个猜测。有人可以确定吗?谢谢。

1
据我所知,Lua会根据需要和可用内存占用尽可能多的内存。但是,数组表的分配是2的幂次方,因此,如果你实际上有一个包含14m个项的数组表,则其长度实际上为2的24次方。但我没有相关的来源。 - dualed
来源:http://www.lua.org/gems/sample.pdf 第19页 - dualed
你收到了什么错误信息? - lhf
1个回答

7
t={}
for i=1,176000000 do t[#t+1]=i end

使用lua的64位windows二进制文件尝试 - 运行良好。

一个大的lua状态

一个64位的luajit二进制文件崩溃了。看起来像是luajit的一个bug。


在4GB后,Lua64位会优雅地停止增加表格,并显示“内存不足”的消息。 - Dmitry Ledentsov
2
这里有一个参考资料,说明Lua表受到4GB内存限制的影响。在源代码中(http://www.lua.org/source/5.1/ltable.c.html):`数组部分的最大大小为2 ^ MAXBITS`。 - Dmitry Ledentsov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接