FastJSON将对象转JSON字符串引发的血案

问题:最近工作中需要将一个将近两百页的pdf的base64作为value转成JSON字符串,而代码中使用的方案就是JSONObject.toJSONString(obj);

而结果就是引发了OOM内存溢出。

翻阅源码找到一段关键点:

FastJSON将对象转JSON字符串引发的血案_第1张图片FastJSON将对象转JSON字符串引发的血案_第2张图片

也就是说FastJSON内部设置了一个阈值,只要处理的对象大于67M,就会直接抛出OOM异常。

解决方案:

使用其他工具例如jackSon

ObjectMapper mapper = new ObjectMapper();
//obj为要转为JSON字符串的对象
String json = mapper.writeValueAsString(obj);

看网上资料有介绍JSON的最大支持处理对象可以到达1G,通过配置可以实现。不过我这里目前没有找到设置方案,先草草结束了

你可能感兴趣的:(Bug记录,开发记录,json)