我的应用程序使用一个
ScriptEngine
来为我的最终用户提供插件功能。ScriptEngineManager engineManager = new ScriptEngineManager();
ScriptEngine engine = engineManager.getEngineByName("nashorn");
每当用户对脚本进行更改时,应用程序会用新实例替换引擎实例。
String newScript = ...;
engine = engineManager.getEngineByName("nashorn");
engine.eval(newScript);
两个紧密相关的问题:
我应该尝试重复使用引擎并对其执行某种
clear()
吗?如果我只是用新实例替换我的引擎,我是否应该以某种方式处理前一个实例,以避免内存泄漏?(例如,我可以想象用户可能会创建一个启动线程的脚本。)
问题是,我找不到任何类似于clear()
或dispose()
的方法。这是否意味着我的当前方法是正确的?