问题标签 [graalvm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - -server -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:+UseJVMCICompiler 时使用哪个编译器
我的 JVM 有-server
选项,我相信它使 JVM 能够使用 C2 编译器,该编译器用于服务器应用程序,这些应用程序的运行时间往往比客户端对应的时间长。-XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:+UseJVMCICompiler
但是,GRAAL JIT(由
-server -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:+UseJVMCICompiler
它最终使用哪个编译器?Graal JIT 还是 C2?
javascript - Graal Javascript - 线程安全
在多线程应用程序(例如每个 servlet 请求)中使用 Graal.js 的推荐方法是什么?我们像这样使用 Graal.js
我们是否应该为每个执行线程提供唯一的上下文/绑定。这可以通过上下文/绑定对池或使用 threadlocal 来完成。这是正确的方法吗?
r - Graalvm - 与 RStudio 集成
在旨在加速 R 语言的项目中,目前使用带有 GraalVM 的 R 语言版本 3.5.1 的 FastR 在我看来似乎更加开发并与最新版本的 R 兼容。
有人知道是否有任何方法可以将 FastR 与 RStudio 集成吗?
GraalVM + R (FastR):https ://www.graalvm.org/docs/reference-manual/languages/r/ 。
graalvm - 使在 Chrome 中调试 graaljs 成为可能的神器
我正在尝试在 graaljs 中采用调试:
java.lang.IllegalArgumentException: Could not find option with name inspect.
我的build.gradle
依赖项如下所示:
而且我绝对记得曾经我应该添加另一个依赖项,以便可以在 chrome 中进行调试 - 但是我不记得 - 或者在任何代码源或文档中找到 - 我应该添加什么作为依赖项
graalvm - 是否可以将预编译的 js 存储和加载到 org.graalvm.polyglot.Context
有什么方法可以将 javascript 源代码转换为一些预编译的声明,可以以某种方式存储和加载,org.graalvm.polyglot.Context
而不是将其评估为原始字符串?像--persistent-code-cache
在 nashorn 中没有记录的东西。
java - GraalVM 中的异常链
我正在使用 GraalVM 执行 JavaScript 文件,但我在处理异常时遇到了问题。我的 JS 代码调用回 Java,如果从这些 Java 方法之一抛出异常,那么我会丢失原因链。
发生这种情况的原因是因为 Graal/Truffle 创建了 的实例HostException
,该实例有一个不调用的构造函数super(e)
,它将其分配给用于获取消息的内部字段,仅此而已。这似乎是故意的,但我不明白原因。这是安全问题吗?你能想出一种方法来改变这种行为吗?我非常希望在我的日志中提供异常的全部原因,但目前它停在HostException
,通常只是说类似“ ”(例如,如果错误的A
原始原因是NoSuchElementException("A")
optimization - GraalVM 可以将提前编译与自适应优化结合起来吗?
据我所知,JVM 可以以不同的方式工作:
解释器:一遍又一遍地从字节码到本机代码的运行时翻译。
即时编译:需要时在运行时将部分字节码编译为本机代码。保留汇编。编译的性能开销/惩罚。引入了在运行时进行自适应优化的可能性,这在静态提前编译中是不可能的。
热点:只有经常执行的部分才会被 JIT 编译。其余的被解释。
现在 GraalVM 可以将字节码提前编译为本机代码。
是否可以提前编译字节码并对热点进行自适应优化(一般来说,特别是 GraalVM)?
【澄清】我并不是说将部分字节码AOT编译为native code,而将其他部分作为字节码在运行时对其进行热点JIT编译。这就是我目前所读到的 IBM 的 Excelsior Jet Java 实现似乎要做的事情。我的意思是 AOT 编译整个字节码并在运行时用自适应优化的热点重新编译替换热点部分。这需要将优化的代码正确连接/插入到现有的 AOT 编译代码中。[/澄清]
我不知道在运行时使用自适应优化重新编译热点需要什么信息。需要字节码吗?这将意味着更高的内存消耗作为更高性能的成本。
我不是这方面的专家,所以请告诉我是否有任何假设是错误的。
java - GraalVM 提前编译(AOT)的安全性
我很喜欢将字节码编译为本机代码,但它不会重新引入安全问题吗?例如,它不是缺少运行时检查,例如检查数组边界吗?
好的,如果您编译受信任的 Java 代码,它可能不会做任何错误,但可能还有其他情况。
java - GraalVM:Quarkus + Mongo 找不到类
我使用 Quarkus 创建了一个示例项目,然后添加了一个 MongoDB。
对于使用 JVM 运行,一切正常,但是当尝试使用 graalvm 构建 docker 映像时,出现以下错误。
如何修复此错误?我尝试将所有依赖项添加到 pom.xml,但似乎不起作用。
要构建错误,只需运行:
测试代码可以在 github vepo/quarkus-mongo找到