java.lang.OutOfMemoryError:jasper报告中的Java堆空间

时间:2009-10-19 05:28:39

标签: java jasper-reports

当我以doc格式导出内容时,我得到java堆空间错误,

java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Unknown Source)
    at java.io.ByteArrayOutputStream.write(Unknown Source)
    at sun.nio.cs.StreamEncoder.writeBytes(Unknown Source)
    at sun.nio.cs.StreamEncoder.implWrite(Unknown Source)
    at sun.nio.cs.StreamEncoder.write(Unknown Source)
    at sun.nio.cs.StreamEncoder.write(Unknown Source)
    at java.io.OutputStreamWriter.write(Unknown Source)
    at java.io.Writer.write(Unknown Source)

8 个答案:

答案 0 :(得分:6)

最佳添加

-XX:+HeapDumpOnOutOfMemoryError

在发生OutOfMemoryError时创建heapdump,然后使用例如分析堆转储来分析堆转储。 Eclipse Memory Analyzer将显示对象的数量,通常可以清楚地识别导致OutOfMemory错误的对象。

答案 1 :(得分:3)

java.lang.OutOfMemoryError: Java heap space

Java只是内存不足。它不能再分配更多的内存了。堆栈跟踪的残余是无关紧要的,它恰好发生在数组复制操作期间。它可能发生在任何地方。

显然,您正在尝试根据极大的数据集(可能有数千或数千条记录)生成报告,或者您提供的JVM内存太少。然后,您应该确保JVM有足够的内存来处理所有数据。默认值为128MB或256MB,具体取决于所使用的JVM和环境。使用JVM的-Xmx参数开始将该数量加倍。

E.g。

java -Xmx512M (other arguments here)

您可能还希望profile您的应用程序检查它实际使用的内存量,然后优化该参数。

另一方面,如果您正在处理非常很多的数据,那么请考虑将其分成几部分,例如:首先是第一千条记录,然后是第二千条记录,等等。

答案 2 :(得分:1)

尝试增加JVM启动的内存,并可以将其用作MAX。

将这些参数添加到启动程序

  

-Xms500M

用你希望JVM开始的许多megs替换500.

  

-Xmx500M

用你希望JVM可以使用的最大内存来替换500多个megs。

答案 3 :(得分:1)

如果数据集很大,那么您需要分页报告生成本身。我正在为jasper报告做一些研究大型数据集,并发现this文章非常有用。

答案 4 :(得分:1)

您应该使用jasper报告的Virtualizers功能。请参阅文章here

答案 5 :(得分:0)

通常的报告不需要大量的内存。你的文件太大了吗?

也许贾斯珀报告无限循环。修改log4j级别以获得有关正在发生的事情的更多线索。尝试删除一些部分,以了解卡在哪里。

我使用了Jasper Reports并得到了一些像这样的错误。有时Jasper Reports的行为很奇怪。

祝你好运。

答案 6 :(得分:0)

您可以在setenv.bat文件中更改内存参数。下面是相同的路径。

jasperhome / apache-tomcat / bin / setenv.bat

在这里,您可以根据需要更改 JvmMs JvmMx 参数。更改参数后,您需要重新启动jasper服务器。一种方法是通过任务管理器重新启动jasper服务。

答案 7 :(得分:0)

如果您在 Jasper iReport 中出现以下错误:

<块引用>

错误填充打印... java.lang.OutOfMemoryError: Java heap space null java.lang.OutOfMemoryError:Java 堆空间 打印未填写。尝试使用 EmptyDataSource...

要解决错误,请执行以下操作:

  1. 增加计算机中的 Java 内存空间

    1. 转到控制面板。

    2. 转到程序。

    3. 转到 Java。

    4. 转到 Java 常规选项卡到 Java 选项卡。

    5. 点击查看。

    6. 之后设置如下图所示。

      enter image description here

  2. 转到 iReport 并进行以下更改。

    enter image description here