tho*_*ter 39 stack-overflow callstack node.js
这与Node中读取RangeError的错误消息的其他问题不同:超出了最大调用堆栈大小我知道为什么我收到此错误消息.它正在发生,因为我正在递归,事实上已经发生了相当大的反复.
谢谢.
Joh*_*yHK 71
来自node --help:
node --max-stack-size=val
Run Code Online (Sandbox Code Playgroud)
更新:正如注释所示,即使帮助文本仍然列出了该--max-stack-size选项,您仍需要在节点v0.10.x中使用--stack-size.
node --stack-size=val
Run Code Online (Sandbox Code Playgroud)
Flo*_*gly 12
在节点版本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
Run Code Online (Sandbox Code Playgroud)
要增加最大堆栈大小,只需发出以下内容:
$ node --stack_size=1200
Run Code Online (Sandbox Code Playgroud)
如其他人所述,请注意增加此值可能会导致分段错误.对于版本6,我的最大安全值是1361,但在版本5中似乎更高.
从更大的角度来看,增加堆栈大小可能无法解决您的所有问题.在节点中编写递归函数时,最好的策略是以尾递归 方式编写它们,因为版本6支持正确的尾调用.这将消除堆栈大小溢出.
| 归档时间: |
|
| 查看次数: |
32414 次 |
| 最近记录: |