Java servlet 返回 JSON 对象。
response.setContentType("application/json");
response.getWriter().write(json.toString());
JSON 对象包含从表(数据库)中获取的数据,其大小 > 50 MB。
在运行时,servlet 抛出这个错误:
java.lang.OutOfMemoryError: Java heap space
问题似乎出在写入 json 数据时。服务器无法为字符串分配大小大于 50 MB 的连续内存。
我无法找到解决此问题的方法。如何从 Servlet 发送巨大的 JSON 对象?
最佳答案
json.toString()
很可能会导致错误。它在发送任何内容之前从现有的 json 对象创建一个大字符串。
将所有内容都存入内存很方便,但在遇到任何限制时并不是很明智。一条一条地处理您的数据库记录并立即流式传输到客户端,而不是在内存中复制。经验法则:“任何给定的限制都会在某个时候被超过。”
关于java - 从 Java Servlet 发送巨大的 json 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25444597/