Groovy大量计算导致oom的解决办法

时间:2022-05-27 10:14:32
【文件属性】:
文件名称:Groovy大量计算导致oom的解决办法
文件大小:6KB
文件格式:JAVA
更新时间:2022-05-27 10:14:32
综合资源 java 并发编程 oom groovy 问题原因分析:使用ScriptEngine.eval每次都会对脚本进行编译,生成一个新的类,被GroovyClassLoader加载,大量执行计算后,将导致被加载的类数量不断增加,最终OOM。 解决办法:对计算的表达式expression进行预编译,以表达式作为key,将编译好的类进行缓存,这样只会首次计算时去编译,后面再次计算时,根据expression从缓存里面取到对象,然后进行计算,不会再去创建类。 下载的资源文件中,封装了并发计算以及内存溢出解决方案的工具类GroovyEngine.java,调用示例: GroovyEngine engine = GroovyEngine.getInstance(); engine.put("a",1); engine.put("b",2); Object v1 = engine.eval("sum(a,b)");

网友评论