【发布时间】:2011-01-25 01:08:59
【问题描述】:
当我尝试将大文件存储到字符串中时遇到以下错误。
Exception in thread "main" 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:515)
at java.lang.StringBuffer.append(StringBuffer.java:306)
at rdr2str.ReaderToString.main(ReaderToString.java:52)
很明显,我的堆空间用完了。基本上我的 pgm 看起来像这样。
FileReader fr = new FileReader(<filepath>);
sb = new StringBuffer();
char[] b = new char[BLKSIZ];
while ((n = fr.read(b)) > 0)
sb.append(b, 0, n);
fileString = sb.toString();
有人可以建议我为什么遇到堆空间错误吗?谢谢。
【问题讨论】:
-
文件有多大?您的 JVM 内存设置 -Xms、-Xmx 是什么?任何 -XX 设置?
-
大约 30MB。它可能比这更大。基本上,我写的是一个使用 Web 服务的客户端。客户端将字符串作为参数传递给 Web 服务。我目前没有更改我的 JVM 设置。
标签: java memory-leaks