打印行,Java堆空间

car*_*oud 6 java exception out-of-memory readline

我想从一个巨大的文本文件(超过600 000 MB)打印每一行.

但是当我尝试下面的代码时,我会在到达第1 000 000行之前得到"... OutOfMemoryError:Java堆空间".

有没有更好的方法来处理输入而不是FileReader和LineNumberReader?

FileReader fReader = new FileReader(new File("C:/huge_file.txt"));
LineNumberReader lnReader = new LineNumberReader(fReader);
String line = "";
while ((line = lnReader.readLine()) != null) {
    System.out.println(lnReader.getLineNumber() + ": " + line);
}
fReader.close();
lnReader.close();
Run Code Online (Sandbox Code Playgroud)

提前致谢!


谢谢大家的回答!

我终于找到了内存泄漏,一个未使用的java类实例,它为每次迭代重复了一次.换句话说,它与文件加载部分无关.

小智 0

也许您应该尝试设置 Java 虚拟机的最大堆大小?或者检查此链接:

http://www.techrepublic.com/article/handling-large-data-files-efficiently-with-java/1046714