Я использую песочницу 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 миллисекунд) и использует много памяти (30 МБ).
Я пытался статически создать песочницу Nashorn для решения этой проблемы,Это быстрее и использует меньше памяти, но возникла проблема с тем, что введенная переменная является общей.
Есть ли способ решить проблему?