如何在Node.js中增加最大调用堆栈大小

时间:2012-07-04 16:02:12

标签: node.js stack-overflow callstack

这与其他有关Node中错误消息的问题不同,该错误消息读取 RangeError:超出最大调用堆栈大小,因为我知道为什么我收到此错误消息。这种情况正在发生,因为我正在递归,实际上已经发生了相当大的反复。

感谢。

2 个答案:

答案 0 :(得分:66)

来自node --help

node --max-stack-size=val

更新:正如评论所示,即使帮助文本仍列出--max-stack-size选项,但在节点v0.10.x中,您需要使用--stack-size

node --stack-size=val

答案 1 :(得分:9)

在节点版本5和6中,我已经验证了设置最大堆栈大小的选项是“--stack_size”(带下划线):

$  node --v8-options
[...]
--stack_size (default size of stack region v8 is allowed to use (in kBytes))
      type: int  default: 984

要增加最大堆栈大小,只需发出类似:

的内容
$ node --stack_size=1200

如其他人所述,请注意增加此值可能会导致分段错误。对于版本6,我的最大安全值是1361,但在版本5中似乎更高。

从更大的角度来看,增加堆栈大小可能无法解决您的所有问题。在节点中编写递归函数时,最好的策略是将它们写在tail-recursive manner中,因为版本6支持正确的尾调用。这将消除堆栈大小溢出。