今天想在项目中用一下Groovy,主要是为了动态的执行用户配置的命令。代码大致如下:1
2
3
4Binding binding = new Binding();
binding.setVariable("R",new RuleFunc());
GroovyShell shell = new GroovyShell(,binding);
shell.evaluate("Groovy Command");
对代码稍微作下修改
1 | Binding binding = new Binding(); |
修改后的代码因为每次都是使用不同的ClassLoader,之前不用的loader会被GC,它加载的类也会被GC,虽然修改后OOM的问题解决了,但是因为GroovyShell每次都会去编译加载类,效率很低。