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

3

我正在使用iReport来构建Jaspersoft报告,并使用Fishbowl作为我的数据库管理系统。

我创建了我的表格,在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堆空间

以下是一些截图以帮助您理解。

enter image description here

enter image description here

enter image description here


1
你确定这不是问题吗?https://plumbr.eu/outofmemoryerror/java-heap-space - Aaron Dietz
@AaronD 如果那是问题,我会做更多的工作测试,但我仍然怀疑那不是问题所在。我这么说只是因为我传递的数据量非常小。我相信这是一个路径问题,但我无法弄清楚:/ - Ashton
1
@Ashton 你检查了查询吗?你得到了多少条记录? - Alex K
@Ashton OutOfMemory是内存不足的错误,通常在处理图像时会出现。您需要检查是否存在内存泄漏,并增加内存。对于Jasper报表,请使用虚拟化技术。 - Petter Friberg
1
@Ashton 你应该使用任何数据库客户端检查记录数。你有没有检查Petter的解决方案? - Alex K
显示剩余2条评论
1个回答

1
当内存不足时,一般的操作是: Java堆空间内存不足 与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);

我该怎么做,Petter?谢谢你总是提供帮助! - Ashton
请查看我的新问题,Petter!http://stackoverflow.com/questions/36582313/wrong-number-printing-out-on-report-while-trying-to-sum-a-group-variable - Ashton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接