【问题标题】:Why does my relational tables throw OutOfMemoryError?为什么我的关系表会抛出 OutOfMemoryError?
【发布时间】:2016-04-07 20:44:59
【问题描述】:

我正在使用 iReport 来构建 jaspersoft 报告,并且我正在使用 Fishbowl 作为我的 DBMS。

我建立了我的表格,在 iReport 中显示我的表格是关系的,但由于某种原因,它给我带来了错误并且不会运行。应该很简单。我正在输入邮政编码、日期范围或州名称,并输出产品名称、履行的总数量、邮政编码和州缩写。

当我将报告上传到 Fishbowl 时,它会运行,但最终会崩溃并显示内存不足的错误。我不认为这是问题所在,但这是导致报告无法正确运行的原因。也许是我的加入?

这是我的 SQL

SELECT
 STATECONST."CODE" AS STATECONST_CODE,
 ADDRESS."STATEID" AS ADDRESS_STATEID,
 ADDRESS."ZIP" AS ADDRESS_ZIP,
 SOITEM."PRODUCTNUM" AS SOITEM_PRODUCTNUM,
 SOITEM."QTYFULFILLED" AS SOITEM_QTYFULFILLED
FROM
 "STATECONST" STATECONST INNER JOIN "ADDRESS" ADDRESS ON STATECONST."ID" =     ADDRESS."STATEID"
 INNER JOIN "ACCOUNT" ACCOUNT ON ADDRESS."ACCOUNTID" = ACCOUNT."ID"
 INNER JOIN "CUSTOMER" CUSTOMER ON ACCOUNT."ID" = CUSTOMER."ACCOUNTID"
 INNER JOIN "SO" SO ON CUSTOMER."ID" = SO."CUSTOMERID"
 INNER JOIN "SOITEM" SOITEM ON SO."ID" = SOITEM."SOID"

错误是:

java.lang.OutOfMemoryError : Java 堆空间

这里还有一些屏幕截图可以提供帮助。

【问题讨论】:

  • 你确定这不是问题吗? plumbr.eu/outofmemoryerror/java-heap-space
  • @AaronD 如果这是问题,我会做更多的工作测试,但我仍然怀疑这是问题所在。我这么说只是因为我传递的数据量太小了。我相信这是一个路径问题,但我无法弄清楚:/
  • @Ashton 你检查了查询吗?你得到了多少记录?
  • @Ashton OutOfMemeory 内存不足,您可能在处理图像时遇到问题,您需要检查是否有泄漏,然后您只能增加内存,对于 jasper 报告,请使用虚拟器.
  • @Ashton 如果与任何数据库客户端记录,您应该检查数字。你检查过 Petter 的解决方案吗?

标签: java sql jasper-reports out-of-memory ireport


【解决方案1】:

当你内存不足时,一般的操作是:

Java heap space out of memory

与默认生成的jasper报告相关内存中的整个报告,可以使用JRVirtualizer更改,参见sample reference中的示例

示例(来自使用文件虚拟器的示例参考)

//Create the virtualizer after 2 pages filled save in tmp director
JRFileVirtualizer virtualizer = new JRFileVirtualizer(2, "tmp");

//Preparing parameters
Map parameters = new HashMap();
parameters.put(JRParameter.REPORT_VIRTUALIZER, virtualizer);

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2012-10-27
  • 1970-01-01
  • 2022-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多