我有字符串缓冲区变量,它保存从文件中读取的输入。有些情况下,我得到了巨大的输入文件。在那些情况下,我得到OutOfMemoryError。
这是我的代码:
StringBuffer response = new StringBuffer("");
BufferedReader in = new BufferedReader(isr);
String inputLine;
while ((inputLine = in.readLine()) != null)
response.append(inputLine);
in.close();
请帮助我解决此问题。
答案 0 :(得分:1)
以块的形式读取输入,或将JVM中的-Xmx
参数(最大内存大小)更改为更大的大小。
答案 1 :(得分:1)
如果您正在处理的文件很大,您可能需要找到一种方法来动态执行该处理,而不是将整个文件读入内存中的StringBuffer
。根据数据的结构方式,这可能会为读入的每一行或每几行执行一些操作。
答案 2 :(得分:0)
另一种选择是仅在内存中保存文件的索引。这取决于你想用它做什么。
例如,如果您希望在屏幕上显示文件内容,则可以打开文件进行随机访问并扫描它,记录文件中每行开头的偏移量。然后,您可以通过查找索引中的行,搜索指定的位置并从那里读取来单独访问每一行。