引起:java.lang.OutOfMemoryError:BIRT报告中的Java堆空间

时间:2014-08-11 12:29:43

标签: java weblogic birt

这是我在eclipse启动的weblogic服务器中运行birt报告时遇到的错误。它在开发环境(本地)中工作正常。当我在测试服务器中部署时,我收到此错误。请任何人帮我解决这个问题。请在下面找到我发布的错误详情:

## org.eclipse.birt.report.engine.api.EngineException: Error happened while running the report.
at org.eclipse.birt.report.engine.api.impl.EngineTask.handleFatalExceptions(EngineTask.java:2371)
at org.eclipse.birt.report.engine.api.impl.RunTask.doRun(RunTask.java:277)
at org.eclipse.birt.report.engine.api.impl.RunTask.run(RunTask.java:86)
at org.eclipse.birt.report.service.ReportEngineService.runReport(ReportEngineService.java:1325)##

## Caused by: java.lang.OutOfMemoryError: Java heap space
at java.lang.reflect.Array.newArray(Native Method)##

2 个答案:

答案 0 :(得分:4)

这个bug似乎存在于BIRT 4.2.2之后,并且仍然存在于BIRT 4.4.2中。

我通过在DataSet的高级属性选项卡中将Row Fetch Size设置为10来成功修复了此行为。

enter image description here

DataSet详细信息对话框中的行获取大小似乎被忽略,事实并且正在使用默认值10000,这会将更小的查询转换为内存提升者。

该错误似乎特别影响Oracle JDBC驱动程序,特别是在提取大量更大的VARCHAR列时,即使只有几行。

答案 1 :(得分:0)

当您尝试将更多数据添加到内存中的堆空间区域时,将触发“java.lang.OutOfMemoryError:Java堆空间”错误,但此数据的大小大于JVM在Java中可容纳的大小堆空间。

您可以通过在JVM启动参数中指定(或增加,如果存在)以下内容来增加允许Java进程使用的堆大小:

-Xmx1024m