现象
线上代码跑一段时间后出现了OOM的问题,经过日志的检查,发现异常出现在fastjson的toJSONString()导致的OOM
解决
将toJSONString()方法改成jackson的转字符串方法
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(obj);
原因
fastjson在转成json字符串的时候会分配一个byte[],当数据量很大的时候,需要分配很大的内存,当分配的内存超过堆内存时,会出现OOM
fastjson确实好用,但是因为之前频繁出现安全问题,加上这次发现的OOM问题,最好还是别用fastjon了,虽然它的api确实简单好用