Eval.x引起的服务暂停

现象

image

image

image

请求耗时明显增加,full gc越来越频繁,且效果不佳

解决方案

业务代码中使用了动态表达式计算函数:Eval.x("x", "x!=null"),修改后代码如下:

// 表达式中不支持null,需要替换为nil
expression = "x!=null".replaceAll("([!=]=\\s*)null", '$1nil')

Map<String, Object> env = new HashMap()
env.put("x", "x")
// 设置为true,开启缓存
Expression compiledExp = AviatorEvaluator.compile(expression, true)
boolean flag = compiledExp.execute(env)

修改后GC耗时10ms内,接口响应200ms内

posted @ 2022-02-15 17:15  肆玖爺  阅读(62)  评论(0)    收藏  举报