javascript - JDK 8 Nashorn Javascript 引擎限制

标签 javascript java java-8 nashorn capacity

我正在迁移到 JDK 8,并且必须使用 Nashorn 来处理 JS 文件。

我曾经能够使用JDK 7 Rhino JS引擎处理具有1个巨大函数的300MB文件。应该注意的是,300MB 是由我的工具处理的生成文件,我知道在大文件中使用单个大函数并不是一个好的做法。

现在我无法执行此操作,并且收到 java.lang.runtimeException: Class file too large!,并具有以下堆栈跟踪:

 at  jdk.nashorn.internal.codegen.CompilationPhase$BytecodeGenerationPhase.transform(CompilationPhase.java:431)
 at  jdk.nashorn.internal.codegen.CompilationPhase.apply(CompilationPhase.java:624)
 at  jdk.nashorn.internal.codegen.Compiler.compile(Compiler.java:655)
 at  jdk.nashorn.internal.runtime.RecompilableScriptFunctionData.compileTypeSpecialization(RecompilableScriptFunctionData.java:725)
 at  jdk.nashorn.internal.runtime.RecompilableScriptFunctionData.getBest(RecompilableScriptFunctionData.java:905)
 at  jdk.nashorn.internal.runtime.ScriptFunctionData.getGeneric(ScriptFunctionData.java:384)
 at  jdk.nashorn.internal.runtime.ScriptFunctionData.createGenericInvoker(ScriptFunctionData.java:282)
 at  jdk.nashorn.internal.runtime.ScriptFunctionData.getGenericInvoker(ScriptFunctionData.java:276)
 at  jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:620)
 at  jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:494)
 at  jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:393)
 at  jdk.nashorn.api.scripting.ScriptObjectMirror.callMember(ScriptObjectMirror.java:199)
 at  jdk.nashorn.api.scripting.NashornScriptEngine.invokeImpl(NashornScriptEngine.java:386)
 at  jdk.nashorn.api.scripting.NashornScriptEngine.invokeFunction(NashornScriptEngine.java:190)

我知道文件大小很荒谬,但它曾经在 Rhino 上运行,我想知道 Nashorn 大小限制是什么以及是否有任何方法可以克服这个。

我使用的是 JDK 8u181。既然 9 和 10 已经可用,那么这个问题在较新的 JDK 版本中是否已修复?

最佳答案

Nashorn 在 Java 11 中已被弃用。

今天最好的选择是 GraalVM .

关于javascript - JDK 8 Nashorn Javascript 引擎限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51864070/

相关文章:

javascript - 如何使用 Javascript 提交 Django 表单?

javascript - 奇怪的 View 属性导致 Backbone

java - 无法导入通过maven添加的包

java - 从java执行mysql命令时出错

java - 从可空列表创建 Java 8 流

javascript - Chrome 开发工具中的 console.log 对象/函数属性

java - 为什么通过 FTP 对包含 170K 文件的文件夹抛出 FTPConnectionClosedException?

Java 流 : Combining two collections into a map

java - 使用嵌套列表进行分组和求和

javascript - Tabpanel 中每个选项卡上的 ExtJS 关闭按钮