java - 从 Java Servlet 发送巨大的 json 对象

标签 java json servlets

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/

相关文章:

java - 如何在 Java POJO 上创建不区分大小写的字段。寻找好的设计。

java - 在Java中将列表中的元素分组到不重复的子列表中

javascript - jQuery DataTables - AJAX 调用正常工作,但数据未绘制成图表

java - JButton:在不触发 Action 的情况下模拟 JButton 按下

java - GWT项目中找不到/js/highcharts.js

java - 在服务器端使用selenium出现异常

jsp - 如何在多部分发布请求中传递参数

java - jsp 未迭代 servlet 发送的 Linkedhashmap

java - 反序列化通用类 Jackson 或 Gson

php - 使用 JSON 和 PHP 获取维基百科内容摘录