我正在使用nashorn沙箱,如下所示。
import delight.nashornsandbox.NashornSandbox;
import delight.nashornsandbox.NashornSandboxes;
public class myClass() {
public void myMethod() {
NashornSandbox sandbox = NashornSandboxs.create();
sandbox.setMaxCpuTime(10000);
sandbox.setMaxMemory(1024*1024*1);
sandbox.setAllowNoBraces(false);
sandbox.setMaxPreparedStatements(30);
sandbox.setExecutor(Executors.newSingleThreadExecutor());
sandbox.inject("input", "abc");
sandbox.eval("var output = input;");
Object obj = sandbox.get("output");
}
}
每次创建实例时,我都会创建一个沙箱。 但是,在eval()/ get()方法部分需要花费很长时间(200毫秒),并占用大量内存(30Mb)。
我试图静态创建一个Nashorn沙箱来解决此问题。 它速度更快并且使用的内存更少,但是存在一个问题,即所注入的变量是共享的。
有没有办法解决这个问题?