使用ulimit增加节点堆栈大小的问题

问题描述

我想增加节点进程的调用堆栈限制,以便可以创建,解析和序列化约100,000层深度的递归对象。如果我有更多时间,我应该以更好的格式来表示。

但是要快速解决,可以使用suggested solution来执行以下操作:

/bin/bash -c "ulimit -s $n; exec /usr/local/bin/node --stack-size=$n app.js"

我有什么需要担心的后果吗?

解决方法

只需使用node --stack-size=2048 app.js或任何其他以KB为单位的数量。但是请记住,这不是生产方式。您将投入的价值更高-可能会变得更加不稳定的应用程序。

正如其他人所指出的那样,请注意增加该值可能会导致分段错误。从更大的角度来看,增加堆栈大小可能无法解决所有问题。在节点中编写递归函数时,最好的策略是以尾部递归的方式编写它们,因为节点支持适当的尾部调用。这将消除堆栈大小的溢出。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...