java.lang.OutOfMemoryError:Java堆空间

时间:2013-03-14 09:51:09

标签: java

我的结果集太大了。如果它返回一个消耗内存的庞大数据集,那么它在服务器中显示OutOfMemory错误。除了增加堆大小外,我该如何处理这个问题呢?

5 个答案:

答案 0 :(得分:0)

尝试不要每次都放这么多数据,请使用paginator或类似的东西。

答案 1 :(得分:0)

首先检查您的查询结果集是否正确/优化 在大多数数据库中,您可以使用类似

之类的内容来限制返回的行数
SELECT top(1000) * FROM mytable;

答案 2 :(得分:0)

使用分页器模式:不是一次性获取所有内容,而是定期获取部分数据。例如,您可以获得20次结果,而不是获得100次结果:0-19,然后是20-39,然后是40-59等...

答案 3 :(得分:0)

如果你无法将整个结果集加载到内存中......那就不要了!我可以根据具体情况考虑三种选择:

  • 一次只读取部分结果集;例如在“页面”中获取它。
  • 在阅读时减少结果集;例如通过提取您需要的字段,制表或其他任何字段。
  • 重新构建查询,以便可以在数据库中完成数据缩减。

如果您提供了有关结果集所包含内容以及您正在使用它的内容的更多详细信息,我们可能会提供具体建议。

答案 4 :(得分:0)

如果您可以构建查询,以便单个查询可以返回您需要的所有内容,那么使用结果集流,您可以让数据库一次一行地返回结果。然后,您的内存使用量将大幅减少,但代价是客户端软件和数据库之间的数据流量会增加。在我自己的公司中,我们发现这在使用返回数百万行的结果集时非常有效。此功能取决于数据库,对于MySQL,它在

中描述

http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-implementation-notes.html

相关问题