简短的问题:我的javascript在递归方面非常深入。如何增加堆栈大小以便我可以执行它(类似于Unix系统中的“ulimit -s unlimited”)?
长篇故事:我必须绘制一个图形并使用Cytoscape JS(http://js.cytoscape.org/)和Dagre布局扩展(https://github.com/cytoscape/cytoscape.js-dagre)。绘图算法深入到递归中,我最终得到Chrome中的“Uncaught RangeError:超出最大调用堆栈大小”和Firefox中的“过多递归”。如何将堆栈大小设置为无限制或非常大(即在Unix系统中像“ulimit -s unlimited”),以便我可以绘制图形?
谢谢!
答案 0 :(得分:1)
尝试更改algorhythm,以便在函数的每次迭代中不使用尽可能多的堆栈空间。例如:
我希望这些想法可以帮到你。
答案 1 :(得分:1)
您可以使用名为trampolining的技巧。
找到了一个解决方案答案 2 :(得分:0)
Chrome有一个标志:
chromium-browser --js-flags="--stack-size 2048"
您还需要在运行上述命令之前运行ulimit -s unlimited
:否则,您的深度递归Javascript代码将导致Chrome崩溃。