在我的网络应用中,我使用的是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)
我尝试增加缓冲区大小但仍然是相同的错误
是否有理由将写作过程或其他想法分开?
答案 0 :(得分: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