No soy experto en Java.Java String Memory Leak
Mi código está leyendo un archivo en un String
. Este código se ejecuta cada 5 minutos. El tamaño del archivo varía. A veces es 100 a veces es 1000 líneas.
Tengo experiencia fuera de la memoria, después de algunos días.
La pregunta que tengo es, cuando mis códigos quedan fuera del alcance de Reading file function
, ¿la basura de Java recoge la cadena?
Estoy bastante confundido leyendo en Internet. Algunas personas dicen que no se borra y usan 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();
}
}
Depende. Las cadenas son objetos. Con los objetos, depende de si el objeto recibe alguna referencia (por ejemplo, el valor de retorno del método). ¿Puedes publicar algún código? –
Sería bueno, de hecho, ver el código y lo que está haciendo con las cadenas que lee. Trate de darnos un poco [SSCCE] (http://sscce.org/) – Boro
No veo cómo el código publicaste podías correr por días. – Anonymoose