Lua是否逐行读取内存中的整个文件?

时间:2016-07-01 12:16:07

标签: lua torch

我正在使用以下代码在Lua中加载一个非常大的文件(大约16GB)并导致内存不足问题。我想知道是否下面的代码,将整个文件加载到内存中,然后逐行迭代或一次只加载一行?

for line in f:lines() do ... end

有没有更好的方法在Lua中加载大文件?

1 个答案:

答案 0 :(得分:0)

不,是的。

你的构造确实逐个读取行,并且在end for块之后它们会立即超出作用域。但是,Lua当时并没有实际释放任何系统内存,而是在小型垃圾收集步骤中定期执行,或者按需进行一次大扫描。当Lua确实有内存时,Lua不会费心地清理它的内部存储。

您需要适当地设置GC配置/内存限制,以使Lua更具侵略性,或者每个合理数量的行手动调用collectgarbage