这与其他关于 Node 中读取RangeError: Maximum call stack size exceeded的错误消息的问题不同,因为我确切地知道为什么会收到此错误消息。发生这种情况是因为我在递归,实际上递归了很多。
谢谢。
这与其他关于 Node 中读取RangeError: Maximum call stack size exceeded的错误消息的问题不同,因为我确切地知道为什么会收到此错误消息。发生这种情况是因为我在递归,实际上递归了很多。
谢谢。
来自node --help
:
node --max-stack-size=val
更新:正如评论所指出的,即使帮助文本仍然列出了该--max-stack-size
选项,在节点 v0.10.x 中您也需要使用它--stack-size
。
node --stack-size=val
在节点版本 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 似乎更高。
纵观全局,增加堆栈大小可能无法解决所有问题。在 node 中编写递归函数时,最好的策略是以尾递归 方式编写它们,因为版本 6 支持正确的尾调用。这将消除堆栈大小溢出。