今天客户反馈有个这样的OOM生产问题,前端接口接收到的是正常的业务错误码,但错误信息是oom异常,这很明显不合理。然后按照客户的步骤本地试了下。
public static void main(String[] args) {
System.out.println(JSON.parseArray("[1,2+||+1]", Integer.class));
}
报错如下:
可以很明显看到,是由于fastjson未对传入的参数格式做校验,解析是不断调用ArrayList.add引起内存溢出。
解决方案:更新fastjson版本,或者对参数的格式做校验,避免传入非法值