首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在NodeJS中更改堆栈大小限制?

如何在NodeJS中更改堆栈大小限制?
EN

Stack Overflow用户
提问于 2022-02-23 12:53:28
回答 1查看 2.2K关注 0票数 2

在我的库(JavaScript中的Scheme)中,我有一个测试应该失败,因为它计算(!1000),并且在实现TCO (尾调用优化)时应该会通过。但是最近NodeJS可能增加了堆栈大小限制,因为测试通过了,这意味着它失败了。

是否有办法使NodeJS中的堆栈大小更小?因此,我不需要增加阶乘函数的值来溢出堆栈。

编辑:注意在GitHub上讨论的--stack-size选项可能会崩溃节点。我希望有一个堆栈溢出错误,但值小于1000。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-23 13:04:34

您可以使用--stack-size V8选项(也请参阅这里)。

要查看默认大小,可以检查--v8-options

代码语言:javascript
复制
$ node --v8-options | grep -B0 -A1 stack-size
  --stack-size (default size of stack region v8 is allowed to use (in kBytes))
        type: int  default: 984

(除了调用和解析node --v8-options之外,我不知道以编程方式读取默认值或当前值的任何方法。)

然后,可以使用该选项指定一个新的堆栈大小:

代码语言:javascript
复制
$ node --stack-size=512 index.js

您还可以使用v8.setFlagsFromString从程序本身设置此值。

代码语言:javascript
复制
const v8 = require('v8');
v8.setFlagsFromString('--stack-size=512');

请注意,在V8中使用的较新版本的V8中,可用的node.js选项在将来可能会发生变化。(例如,我相信这个选项以前用下划线来命名为stack_size,但现在它是带有破折号的stack-size。)如果选项不再存在,则可以使用套餐包或以编程方式调用node --v8-options来引发错误,以便调整测试。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71237313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档