Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Memory LuaJit增加堆栈/堆大小_Memory_Lua_Stack_Heap_Luajit - Fatal编程技术网

Memory LuaJit增加堆栈/堆大小

Memory LuaJit增加堆栈/堆大小,memory,lua,stack,heap,luajit,Memory,Lua,Stack,Heap,Luajit,我在LuaJit中不断遇到内存不足的错误。如何增加堆栈或堆的大小 谢谢我自己没有用过LuaJIT,除了玩具的例子。但既然还没有其他人提供任何答案 LuaJIT从浏览数据库开始,依赖于标准协同程序库的Coco扩展。Coco引入的一个变化是,创建新协同路由的函数现在采用了一个可选参数来指定堆栈大小 引用Coco文件: coro=coroutine.create(f[,cstacksize]) func=coroutine.wrap(f[,cstacksize]) 可选参数cstacksize 指定要

我在LuaJit中不断遇到内存不足的错误。如何增加堆栈或堆的大小


谢谢

我自己没有用过LuaJIT,除了玩具的例子。但既然还没有其他人提供任何答案

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语句设置。

谢谢。我将尝试增加c编译器堆栈的大小,并减少协同程序堆栈的大小。没有骰子。我尝试将-Wl,--stacksize=flags注入到ldargs中,但它似乎忽略了它。我不确定减小协程堆栈大小是否会有帮助。我想增加它。。。我没有看到任何关于什么控制初始线程堆栈大小的语句,如果它不是链接时间堆栈大小的话。但是如果你有协同程序,并且其中一个正在报告堆栈外,那么你需要增加可用的堆栈大小,如果不是全部的话,至少要增加该协同程序的可用堆栈大小。我认为每个线程都有一个固定的堆栈存储,每个协同程序的模拟堆栈占用了其中的一大块。因此,减少协同路由的模拟堆栈大小应该允许创建更多的协同路由。