graalvm - 使用 Graal 时如何配置 js 节点堆栈大小?
问题描述
当我尝试在 js 中使用深度递归函数时遇到问题,我得到异常(RangeError:超出最大调用堆栈大小)。这个功能完美的工作了 Graal。只有在调用 polyglot 时才会复制它Context.execute()
。第一次调用完成无异常但其他抛出。我使用 docker 和 graaljdk 图像oracle/graalvm-ce:20.0.0-java11
并为所有线程使用一个引擎并为每个线程创建上下文。我可以通过 graal 选项或其他方式增加节点堆栈大小吗?
解决方案
根据您的描述,我假设您正在使用 polyglot API 从一些 Java 代码启动 Graal JS。
Graal JS 与 JVM 的其余部分在相同的线程上运行。您可以使用该-Xss
参数增加 JVM 的堆栈大小。例如
$ <graalvm>/bin/java -Xss2m …
2m
表示 2MB(我认为 x86_64 上的默认值是 1MB)。您可以尝试各种大小,但请记住,您设置的越高,在固定内存量中可以容纳的线程就越少。
推荐阅读
- python - 出现错误:int() 参数必须是字符串、类似字节的对象或数字,而不是 'numpy.dtype
- javascript - 从多个具有公共对象的数组中创建一个数组
- json - 我正在尝试处理 json 文件,但是在从 JsonLint 检查时出现错误 Expecting 'EOF', got ','
- unity3d - 有没有办法让相机在 Unity 3D(版本 2019.3.15f1)中跟随 g-force?
- java - 当我进行 http post 调用时如何删除用户代理字符串?
- java - java中递归函数中的字符串返回值
- angular - Tailwind 在 Angular 9 中使用自定义 scss 文件进行扩展
- embed - 授权外部域嵌入我的内容
- c# - .NET Core Docker 性能不佳
- javascript - 使用 Ajax、JavaScript、PHP 删除数据库条目