我们正在使用返回大量数据的REST服务。 在生产中,服务器硬件可以处理它。 我需要通过在本地计算机上获取数据来测试REST服务, 它无法处理庞大的数据。 我的本地机器是4G i5。 每次我点击服务时,我都会出现内存异常。
response.getStatus()
返回200状态。
但是在使用输入流读取器收集数据时,我得到了内存不足的异常。
BufferedReader br = new BufferedReader(new
InputStreamReader(newByteArrayInputStream(response.getEntity().getBytes())));
有没有其他方法来收集数据而不会遇到内存异常?
我尝试将我的VM大小推到2G,但仍然无效。
答案 0 :(得分:4)
如果服务支持,请在整个响应内容有效负载范围内使用requesting chunks的HTTP标准方法。
另一种方法(同样,假设API支持它)是pagination。
答案 1 :(得分:2)
您可以在REST服务配置中实施限制返回数据量的阈值设置。 在生产中,阈值将不被设置或将被设置为大值。 在测试环境中,您可以将阈值设置为较小的可管理值。