我正在从 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);