【问题标题】:Out of memory - Java heap space内存不足 - Java 堆空间
【发布时间】:2015-04-29 00:32:08
【问题描述】:

我有一份报告在导出后应该提供大约 18000 页,并且有 600K 行记录。运行后出现内存不足错误。我已经应用了虚拟化,但它不起作用。我也尝试增加tomcat服务器的内存大小,但增加大小后服务器没有启动。

【问题讨论】:

  • 能否提供相关日志?这个内存不足错误消息来自哪里?
  • 你的物理机配置是什么?可能您有内存泄漏或根本不释放内存。你应该批量释放内存,以便它可以重复使用
  • 它是 6GB RAM 和 2.3 GHz 处理器。并且默认的Tomcat设置为“-Xms512m -Xmx1024m”

标签: jasperserver


【解决方案1】:

根据我的经验,您的服务器上没有足够的 RAM。

是否绝对有必要将报告显示为网页?从我们的客户那里,我们得到反馈,他们永远不想浏览这么多页面。最好将它们的数据直接导出到 excel 文件中,在那里他们有很多选择如何使用它们。

一种解决方案是在一个页面上有更多记录,从而导致生成的页面数量更少。但是这种情况下你的 RAM 内存我不确定它是否有帮助

How to control the number of rows in a JasperReport

【讨论】:

  • 感谢您的回复。其实我们的设计也有点复杂。在每个代理详细信息的详细信息带之后,大约有 130 个变量(带计算),显示在 5 个组页脚中。该查询返回大约 600k 行数据。那么,您对此有何看法。在这里,我们正在处理 60 万条记录,具有 130 个变量的复杂设计和计算..
  • 问题是谁将使用此报告,如何以及是否必须为 html 页面。我无法想象有人会将 60 万条记录分成数十或数百个报告页面。第二件事是,可能没有浏览器会实时显示包含 60 万条记录的报告,或者绝对不会实时显示。我想只给用户一些小的汇总表/报告,并且可以从这个报告中直接将 600k 记录导出到 excel 文件中。
  • 谢谢.. 我们有 6 GB 的 RAM。如果我听从您的建议,我们可能需要什么配置来运行此报告。它是否适用于默认的 Tomcat 服务器内存设置,即 -Xms512m -Xmx1024m。因为当我尝试增加最大大小时(如某些论坛中所建议的那样),它会抛出错误提示“JasperserverTomacat 无法启动”
  • 我不确定 jasper 究竟是如何创建 excel 文件的。我希望它可以通过直接输出到磁盘,但如果他首先在内存中创建整个 excel 那么你会遇到同样的问题 - 内存不足 作为优先事项,你应该尝试更改 tomcat 的内存设置,以便 jasper 可以拥有更多其中。同一台机器上是否还有数据库?或者你有一台只有 6 GB RAM 的服务器用于 jasper?如果是这样,那么如果没有其他东西可以在该机器上运行,我想给 jasper 大约 5 GB 的空间。
猜你喜欢
  • 2021-11-20
  • 2020-01-23
  • 2014-01-04
  • 1970-01-01
  • 1970-01-01
  • 2011-10-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多