小编典典

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

sql

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

我建立了表,并在iReport中显示了我的表是关系型的,但是由于某种原因,它使我出错并且无法运行。它应该非常简单。我要输入邮政编码,日期范围或州名,并输出productName,已实现的总数量,邮政编码和州名的缩写。

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


阅读 245

收藏
2021-03-08

共1个答案

小编典典

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

与jasper报告相关,它默认情况下会 在内存中 生成 整个报告
,可以使用JRVirtualizer进行更改,请参见示例参考中的示例

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

//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);
2021-03-08