从Java Servlet发送巨大的json对象

Gau*_*mar 1 java json servlets

Java servlet返回JSON对象.

response.setContentType("application/json");
response.getWriter().write(json.toString()); 
Run Code Online (Sandbox Code Playgroud)

JSON对象包含从表(数据库)大小获取的数据,大小> 50 MB.

在运行时,servlet会抛出此错误:

java.lang.OutOfMemoryError: Java heap space
Run Code Online (Sandbox Code Playgroud)

似乎问题在于编写json数据.服务器无法为字符串分配大小> 50 MB的连续内存.

我无法找到解决此问题的方法.如何从Servlet发送巨大的JSON对象?

Axe*_*hor 5

json.toString()很可能会导致错误.在发送任何内容之前,它会从已存在的json对象创建一个大字符串.

把所有东西都塞进记忆中很方便,但是当遇到任何限制时都不是很明智.逐个处理数据库记录并立即流式传输到客户端,而不是在内存中复制.经验法则:"在某些时候会超出任何限制."