Я не являюсь экспертом по 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();
}
}