Утечка памяти строки Java

Я не являюсь экспертом по java.

Мой код считывает файл в String . Этот код запускается каждые 5 минут. Размер файла варьируется. Иногда это 100, иногда это 1000 строк.

Через несколько дней у меня не хватает памяти.

У меня возникает вопрос, когда мои коды выходят за рамки функции чтения файла ], собирает ли Java мусор String?

Я довольно запутался, читая в Интернете. Некоторые говорят, что он не удаляется, и используют StringBuffer .

// Demonstrate FileReader.

import java.io.*;
class FileReaderDemo {
    public static void read(BufferedReader br) throws Exception {
        long length = 0;
        String s;
        while (true) {
            s = br.readLine();
            s += "abcd";
            if (s == null) {
                break;
            }
            length += s.length();
            //System.out.println(s);
        }
        System.out.println("Read: " + (length / 1024 / 1024) + " MB");
    }

    public static void main(String args[]) throws Exception {
        //FileReader fr = new FileReader("FileReaderDemo.java");
        FileReader fr = new FileReader("big_file.txt.1");
        BufferedReader br = new BufferedReader(fr);
        String s;
        read(br);
        fr = new FileReader("big_file.txt.1");
        br = new BufferedReader(fr);
        read(br);
        fr = new FileReader("big_file.txt.1");
        br = new BufferedReader(fr);
        read(br);
        fr = new FileReader("big_file.txt.1");
        br = new BufferedReader(fr);
        read(br);
        BufferedReader in = new BufferedReader(new InputStreamReader(System. in )); in .readLine();
        fr.close();
    }
}
7
задан Peter Lawrey 11 April 2016 в 07:16
поделиться