首页 > 解决方案 > 使用 Graal 时如何配置 js 节点堆栈大小?

问题描述

当我尝试在 js 中使用深度递归函数时遇到问题,我得到异常(RangeError:超出最大调用堆栈大小)。这个功能完美的工作了 Graal。只有在调用 polyglot 时才会复制它Context.execute()。第一次调用完成无异常但其他抛出。我使用 docker 和 graaljdk 图像oracle/graalvm-ce:20.0.0-java11并为所有线程使用一个引擎并为每个线程创建上下文。我可以通过 graal 选项或其他方式增加节点堆栈大小吗?

标签: graalvmgraaljs

解决方案


根据您的描述,我假设您正在使用 polyglot API 从一些 Java 代码启动 Graal JS。

Graal JS 与 JVM 的其余部分在相同的线程上运行。您可以使用该-Xss参数增加 JVM 的堆栈大小。例如

$ <graalvm>/bin/java -Xss2m …

2m表示 2MB(我认为 x86_64 上的默认值是 1MB)。您可以尝试各种大小,但请记住,您设置的越高,在固定内存量中可以容纳的线程就越少。


推荐阅读