【发布时间】:2010-11-24 04:25:25
【问题描述】:
我在 LuaJit 中不断收到内存不足的错误。如何增加堆栈或堆大小?
谢谢
【问题讨论】:
标签: memory lua heap-memory stack-memory luajit
我在 LuaJit 中不断收到内存不足的错误。如何增加堆栈或堆大小?
谢谢
【问题讨论】:
标签: memory lua heap-memory stack-memory luajit
我自己没有使用过 LuaJIT,除了玩具示例。但是由于没有其他人提供任何答案......
通过浏览documentation,LuaJIT 依赖于标准协程库的 Coco 扩展。 Coco 引入的变化之一是创建新协程的函数现在采用一个可选参数来指定堆栈大小。
引用 Coco 文档:
coro = coroutine.create(f [, cstacksize])func = coroutine.wrap(f [, cstacksize])可选参数
cstacksize将 C 堆栈的大小指定为 分配给协程:
- 如果没有给出
cstacksize或者是nil或 零。- 如果
cstacksize是-1,则不分配C 堆栈。- 任何其他值都被四舍五入到最小大小(即使用
1得到 最小尺寸)。
还有新的函数coroutine.cstacksize([newdefault]) 设置默认的 C 堆栈大小,以及对 C API 的一些相应更改。
此外,LuaJIT 版本的 luaconf.h 中有许多编译时配置选项。那里可能有一些设置默认值的东西。在 Windows 上,可执行文件的基本堆栈也有一个链接时间设置,由 MSVC 的 LINK.EXE 通过应用程序的 .DEF 文件中的 STACKSIZE 语句设置。
【讨论】: