我在LuaJit中不断出现内存不足错误。如何增加堆栈或堆大小?
由于
答案 0 :(得分:3)
我自己没有使用过LuaJIT,除了玩具示例。但是,由于没有人提供任何答案......
从浏览documentation开始,LuaJIT依赖于标准协同程序库的Coco扩展。 Coco引入的一个变化是,创建新协程的函数现在采用一个指定堆栈大小的可选参数。
引用Coco文档:
coro = coroutine.create(f [, cstacksize])
func = coroutine.wrap(f [, cstacksize])
可选参数
cstacksize
指定C堆栈的大小 为协程分配:
- 如果未给出
cstacksize
或nil
或cstacksize
,则使用默认堆栈大小 零。- 如果
-1
为1
,则不会分配C堆栈。- 将任何其他值四舍五入为最小尺寸(即使用
coroutine.cstacksize([newdefault])
来获取 最小尺寸)。
还有新函数{{1}}设置默认的C堆栈大小,以及对C API的一些相应更改。
此外,LuaconJ.h的LuaJIT版本中有许多编译时配置选项。可能存在设置默认值的内容。在Windows上,还有一个可执行文件基本堆栈的链接时设置,由MSVC的LINK.EXE通过应用程序的.DEF文件中的STACKSIZE语句设置。