Java 从RESTAPI返回非常大的数据

Java 从RESTAPI返回非常大的数据,java,Java,我有大量的数据(~4GB)作为可编辑列表从数据库返回。我想以JSON的形式从RESTAPI返回这些数据。我只能使用512 mb的Java堆来完成此任务。对此,我可以采取什么方法?我尝试过Java流,但到目前为止,我总是遇到堆空间不足错误。任何例子都会大有帮助。☺️ 我提出这个解决方案: 对查询添加限制,以仅获取部分数据(

我有大量的数据(~4GB)作为可编辑列表从数据库返回。我想以JSON的形式从RESTAPI返回这些数据。我只能使用512 mb的Java堆来完成此任务。对此,我可以采取什么方法?我尝试过Java流,但到目前为止,我总是遇到堆空间不足错误。任何例子都会大有帮助。☺️

我提出这个解决方案:

  • 对查询添加限制,以仅获取部分数据(<512mb)
  • 处理您获得的部分数据,并将其返回到带有“未完成”标志的客户端
  • 询问服务器以下部分
  • 重复步骤1至3,直到没有数据要处理
  • 返回带有“完成”标志的最后一部分
  • 利润

  • 我提出这一解决办法:

  • 对查询添加限制,以仅获取部分数据(<512mb)
  • 处理您获得的部分数据,并将其返回到带有“未完成”标志的客户端
  • 询问服务器以下部分
  • 重复步骤1至3,直到没有数据要处理
  • 返回带有“完成”标志的最后一部分
  • 利润

  • 将结果分页。没有人需要同时加载4GB的结果。如果显示的不是数据而是文件,那么使用另一种解决方案,比如存储它们并将URL返回到文件。这可能会有所帮助。它不能是文件。就像从浏览器中点击get方法,JSON会慢慢加载到浏览器中。实际上,我试图将iterable转换为Java8流,并从API返回流,但运气不好。@ReactivePsycho什么客户端一次需要4GB的数据?您的前端将无法处理如此大的响应。我并不是说我需要立即使用4gb数据。我只想找到一种方法,从api惰性地返回数据,而不需要将整个数据加载到内存中。我的类是:类A{list hugeList;}。我使用从数据库中获取的数据设置hugeList,并尝试从API返回类A的对象。对结果进行分页。没有人需要同时加载4GB的结果。如果显示的不是数据而是文件,那么使用另一种解决方案,比如存储它们并将URL返回到文件。这可能会有所帮助。它不能是文件。就像从浏览器中点击get方法,JSON会慢慢加载到浏览器中。实际上,我试图将iterable转换为Java8流,并从API返回流,但运气不好。@ReactivePsycho什么客户端一次需要4GB的数据?您的前端将无法处理如此大的响应。我并不是说我需要立即使用4gb数据。我只想找到一种方法,从api惰性地返回数据,而不需要将整个数据加载到内存中。我的类是:类A{list hugeList;}。我正在使用从数据库获取的数据设置hugeList,并尝试从API返回类A的对象。保存到文件不是一个选项。此答案不描述保存到文件,并且可以实际执行您想要的操作..它将结果分步返回到客户端,直到完成@reactivePsycholing to file不是一个选项。此答案不描述保存到文件,实际上可以执行您想要的操作..它将结果分步返回到客户端,直到完成@reactivePsycholo