字符串缓冲区 - OutOfMemoryError

时间:2013-04-18 10:18:55

标签: java stringbuffer

我有字符串缓冲区变量,它保存从文件中读取的输入。有些情况下,我得到了巨大的输入文件。在那些情况下,我得到OutOfMemoryError。

这是我的代码:

StringBuffer response = new StringBuffer("");
BufferedReader in = new BufferedReader(isr);
String inputLine;
while ((inputLine = in.readLine()) != null)
        response.append(inputLine);
in.close();

请帮助我解决此问题。

3 个答案:

答案 0 :(得分:1)

以块的形式读取输入,或将JVM中的-Xmx参数(最大内存大小)更改为更大的大小。

答案 1 :(得分:1)

如果您正在处理的文件很大,您可能需要找到一种方法来动态执行该处理,而不是将整个文件读入内存中的StringBuffer。根据数据的结构方式,这可能会为读入的每一行或每几行执行一些操作。

答案 2 :(得分:0)

另一种选择是仅在内存中保存文件的索引。这取决于你想用它做什么。

例如,如果您希望在屏幕上显示文件内容,则可以打开文件进行随机访问并扫描它,记录文件中每行开头的偏移量。然后,您可以通过查找索引中的行,搜索指定的位置并从那里读取来单独访问每一行。