Compiler construction 如何缓存Groovy脚本引擎生成的编译类?

Compiler construction 如何缓存Groovy脚本引擎生成的编译类?,compiler-construction,groovy,Compiler Construction,Groovy,我正在从scala动态运行groovy脚本,但在调用groovy脚本引擎的loadScriptByName方法时编译groovy脚本需要一些时间 自上次运行应用程序以来,从应用程序加载和编译的大多数groovy脚本都没有更改,因此我想没有必要每次都编译它们 有没有办法存储已编译的groovy脚本,并在它们没有任何更改的情况下从我的应用程序中运行它们?如果对同一个groovy脚本调用loadScriptBynName方法两次或两次以上,我知道groovy脚本引擎缓存编译的脚本,但当我关闭应用程序时

我正在从scala动态运行groovy脚本,但在调用groovy脚本引擎的loadScriptByName方法时编译groovy脚本需要一些时间

自上次运行应用程序以来,从应用程序加载和编译的大多数groovy脚本都没有更改,因此我想没有必要每次都编译它们

有没有办法存储已编译的groovy脚本,并在它们没有任何更改的情况下从我的应用程序中运行它们?如果对同一个groovy脚本调用loadScriptBynName方法两次或两次以上,我知道groovy脚本引擎缓存编译的脚本,但当我关闭应用程序时,这些缓存就消失了。可能它正在内存中存储缓存的脚本?

使用:

String script = ""     // some script
string scriptName = "" // unique script name

GroovyClassLoader groovyClassLoader = GroovyClassLoader() 
GroovyCodeSource gcs = new GroovyCodeSource(script, scriptName, "/app/script");
Class<?> executableClass = groovyClassLoader.parseClass(gcs, true);
String script=”“//一些脚本
字符串scriptName=”“//唯一的脚本名称
GroovyClassLoader GroovyClassLoader=GroovyClassLoader()
GroovyCodeSource gcs=新的GroovyCodeSource(script,scriptName,“/app/script”);
Class executableClass=groovyClassLoader.parseClass(gcs,true);

GroovyScriptEngine将编译后的脚本存储在内存中一个名为的变量中。