小编Wee*_*and的帖子

我读取大文本文件的Java程序内存不足,任何人都可以帮忙解释原因吗?

我有一个包含2000万行文本的大文本文件.当我使用以下程序读取文件时,它工作正常,实际上我可以读取更大的文件,没有内存问题.

public static void main(String[] args) throws IOException {
    File tempFile = new File("temp.dat");
    String tempLine = null;
    BufferedReader br = null;
    int lineCount = 0;
    try {
        br = new BufferedReader(new FileReader(tempFile));
        while ((tempLine = br.readLine()) != null) {
            lineCount += 1;
        }
    } catch (Exception e) {
        System.out.println("br error: " +e.getMessage());
    } finally {
        br.close();
        System.out.println(lineCount + " lines read from file");
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我需要在读取之前将一些记录附加到此文件中,BufferedReader会消耗大量内存(我刚刚使用Windows任务管理器来监视这一点,我知道这不是很科学,但它证明了这个问题).修改后的程序如下,与第一个程序相同,只是我首先在文件中附加一条记录.

public static void main(String[] args) throws IOException {
    File tempFile = new File("temp.dat"); …
Run Code Online (Sandbox Code Playgroud)

java

15
推荐指数
1
解决办法
6661
查看次数

标签 统计

java ×1