Mar*_*ska 1 java linked-list out-of-memory filereader bufferedreader
我试图从txt文件(书)中读取,然后将其每一行添加到链表.但是,当我运行代码时,我得到了一个outofmemory错误l.add(line);.你能告诉我这段代码我做错了什么吗?或者,有没有更好的方法来存储String值而不是LinkedList?
非常感谢!
public Book (String bookname) throws java.io.IOException{
f = new FileReader(bookname);
b = new BufferedReader(f);
l = new LinkedList<String>();
String line = b.readLine();
while (line != null) {
l.add(line);
}
b.close();
}
Run Code Online (Sandbox Code Playgroud)
正如其他人所指出的那样,你创造了一个无限的,耗费内存的循环.从BufferedReader读取的常用习惯是:
String line;
while ( ( line = b.readLine() ) != null) {
l.add(line);
}
Run Code Online (Sandbox Code Playgroud)
我想这本书的内容可能太大了,无论如何都不能同时适应内存.您可以使用Xmx参数增加JVM可用的内存,即:
java -Xmx1G MyClass
Run Code Online (Sandbox Code Playgroud)
这个默认值是64 Mb,这些日子并不多.
| 归档时间: |
|
| 查看次数: |
1041 次 |
| 最近记录: |