-1

在我的网络应用程序中,我使用的是 BufferedWriter,因此用户将能够生成和下载报告。

File evl = new File(tmpDirPath + "evl.xml");
portEVL.deleteOnExit();
fw = new FileWriter(evl);
bw = new BufferedWriter(fw);
bw.write(getHeader().concat(evlBuffer.toString()));

写入缓冲区时,我收到以下错误消息:

Caused By: java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2882)
at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100)
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:390)
at java.lang.StringBuilder.append(StringBuilder.java:119)

我尝试增加缓冲区大小但仍然出现相同的错误

有没有为什么要分开写作过程或其他一些想法?

4

1 回答 1

3

您的问题与缓冲区空间无关,您的 JVM 中的堆空间不足!

尝试使用这些标志增加堆大小:

-Xms<size>        set initial Java heap size
-Xmx<size>        set maximum Java heap size
-Xss<size>        set java thread stack size

java -Xms16m -Xmx64m ClassName

对你来说最重要的是-Xmx<size> set maximum Java heap size

您也可以始终以千兆字节为单位,将java -Xmx2g ClassName

这是官方的 Oracle 文档。

于 2013-07-12T19:42:15.277 回答