【发布时间】:2014-05-18 07:38:10
【问题描述】:
我相信开放流会导致 java 中的内存泄漏(至少 java 1.6 和更早版本确实有这个问题)。
但是,在搜索时(甚至在这里),我发现有些人同意这一点,而另一些人则不同意。所以,如果我写这个程序:
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");
}
}
如果我不明确关闭bf 流,会导致内存泄漏吗?
【问题讨论】:
-
注意,通常
close的想法是释放原生资源(比如C堆分配的数据需要deleted)。ByteArrayInputStreamspecifically saysclosehas no effect on it 的文档。所以我认为这不是你在这里实际要求的一个很好的例子。
标签: java memory-management memory-leaks