luajit 内存限制解决方案

我一直在开发一个实用程序,它会明智地使用表,并面临一个问题:

Luajit 的可怕的 ~2GB 内存限制。我使用的是 luajit 2.0.5。我正在处理非常大的平面文件。我尝试从 lua 中强制进行垃圾回收;这对一些情况下有效,但它仍然会继续增长,并最终因“内存不足”而出错。

我进行了研究,并发现其中一个解决方法是使用 luajit ffi 接口来分配 lua 控制之外的内存。太好了!具体怎么做呢?

我进行了一些研究,并找到了以下链接:

https://www.develcuy.com/en/playing-luajit-ffi

这实际上展示了如何使用 C 库;这不是我想要的,因为我希望从 FFI C 接口中分配内存,以便脚本不会出现问题。

我再看了一下,找到了:

Why is LuaJIT's memory limited to 1-2 GB on 64-bit platforms?

看起来 RaptorJIT 和 OpenResty Luajit2 都有补丁来完全避免这个问题......而且此外,看起来 luaJIT beta 也有这个问题。

所以问题是,不需要重写,如何最聪明地突破 2GB 限制?我最终让代码按照我想要的方式工作,它足够快,似乎没有错误——除了令人讨厌的 2GB 限制,因为我仅在测试 20GB 的输入文件时才发现它。:-(

点赞