OutofMemory LinkedList添加错误

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)

Mat*_*ard 6

正如其他人所指出的那样,你创造了一个无限的,耗费内存的循环.从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,这些日子并不多.