我必须设计一个JAVA REST API,该API接受Json请求,并且需要将数据上传到数据库。数据也包含图像(Base64编码),因此每个请求的大小约为25MB。当这些请求的频率增加时,问题就开始了(我已经在1秒内测试了10个请求),并且API以此速率抛出java.lang.OutOfMemoryError: Java heap space
或java.lang.OutOfMemoryError: GC overhead limit exceeded
。
我试图增加堆大小,但没有帮助。
在尝试解决问题时,我尝试禁用任何处理,只是在服务器上读取了请求。即使没有任何请求,我也遇到了同样的异常。
这是我收到请求后要做的事情
1)从请求中读取并将所有内容存储在字符串中
2)从此字符串获取json对象(我正在使用org.json)
3)其余处理(我跳过了测试,但仍然遇到异常)。
我的问题是如何处理这么多数据?我是否应该将每个请求保存在文件中并一次处理固定数量的请求(我认为应该避免)?我应该使用其他库或算法吗?任何建议都会有所帮助。
我正在使用Jboss-eap-6.4