我不是java专家。Java字符串内存泄漏
我的代码正在将文件读入String
。此代码每5分钟执行一次。 文件的大小各不相同。有时候是100,有时候是1000。
我经历了一段时间之后的内存不足。
我的问题是,当我的代码超出Reading file function
的范围时,Java垃圾收集字符串?
我在网上阅读很困惑。有人说它不会被删除并使用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();
}
}
这取决于。字符串是对象。使用对象时,它取决于对象是否被任何东西引用(例如方法的返回值)。你可以发布一些代码吗? – 2011-05-20 12:56:24
实际上很高兴看到代码,以及你正在用你读的字符串做什么。TRy给我们一些[SSCCE](http://sscce.org/) – Boro 2011-05-20 12:58:02
我看不到代码你发布可能会运行几天。 – Anonymoose 2011-05-20 13:04:36