0

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

这是我的代码:

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

请帮助我如何解决这个问题。

4

3 回答 3

1

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

于 2013-04-18T10:22:12.703 回答
1

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

于 2013-04-18T10:22:56.567 回答
0

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

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

于 2013-04-18T13:04:57.087 回答