Tôi tin rằng các luồng mở gây ra rò rỉ bộ nhớ trong java (ít nhất là java 1.6 và trước đó đã có vấn đề này).Các luồng không được tiết lộ có gây rò rỉ bộ nhớ trong java không?
Nhưng, trong khi tìm kiếm (ngay cả ở đây), tôi thấy một số người đồng ý với điều này trong khi những người khác thì không. Vì vậy, nếu tôi viết chương trình này:
import java.io.*;
public class CreatingMemoryLeak {
public static void main(String args[])
{
String s = "xxxxxxx";
InputStream in = new ByteArrayInputStream(ss.getBytes());
BufferedInputStream bf = new BufferedInputStream(in);
try {
while(bf.read()>0)
{
System.out.println("got it");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Here is a input stream " + s +" causing a memory leak");
}
}
và nếu tôi không đóng dòng bf
một cách rõ ràng, nó có gây rò rỉ bộ nhớ không?
Lưu ý rằng ý tưởng của 'close' là để giải phóng tài nguyên gốc (chẳng hạn như dữ liệu được cấp phát heap C cần phải là' delete'd). Tài liệu cho 'ByteArrayInputStream' [cụ thể nói' close' không ảnh hưởng đến nó] (http://docs.oracle.com/javase/7/docs/api/java/io/ByteArrayInputStream.html#close%28%29). Vì vậy, tôi không nghĩ đó là một ví dụ tốt về những gì bạn đang thực sự yêu cầu ở đây. – Radiodef