Eval.x引起的服务暂停
现象
请求耗时明显增加,full gc越来越频繁,且效果不佳
解决方案
业务代码中使用了动态表达式计算函数:Eval.x("x", "x!=null"),修改后代码如下:
// 表达式中不支持null,需要替换为nil
expression = "x!=null".replaceAll("([!=]=\\s*)null", '$1nil')
Map env = new HashMap()
env.put("x", "x")
// 设置为true,开启缓存
Expression compiledExp = AviatorEvaluator.compile(expression, true)
boolean flag = compiledExp.execute(env)
修改后GC耗时10ms内,接口响应200ms内