使用Graal时如何配置js节点堆栈大小?

How to configure js node stack size when using Graal?

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

根据您的描述,我假设您是使用多语言 API.API.

从一些 Java 代码启动 Graal JS

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

$ <graalvm>/bin/java -Xss2m …

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