为什么我的关系表会抛出OutOfMemoryError?

时间:2016-04-07 20:45:00

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

我使用iReport构建jaspersoft报告,我使用Fishbowl作为我的DBMS。

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

当我将报告上传到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堆空间

以下是一些有用的屏幕截图。

enter image description here

enter image description here

enter image description here

1 个答案:

答案 0 :(得分: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);