调用close方法后,输出流/输入流对象引用会发生什么?

时间:2015-05-11 23:13:13

标签: java garbage-collection java-io

当您在OutputStream / InputStream对象的对象引用上调用close()方法时,对象引用是否指向null?或者我们是否需要将其显式设置为null以使对象内存可用于GC?

2 个答案:

答案 0 :(得分:1)

没有。 close()将释放一些底层资源和对象,但此对象仍然存在。

实际上,close()可能无法执行任何操作,例如ByteArrayInputStream

/**
 * Closing a <tt>ByteArrayInputStream</tt> has no effect. The methods in
 * this class can be called after the stream has been closed without
 * generating an <tt>IOException</tt>.
 */
public void close() throws IOException {
}

您可以在其上调用close(),然后仍然可以使用它,就像没有任何事情一样。

答案 1 :(得分:0)

没有必要使流无效,一旦流关闭并超出范围,流就会自动标记为垃圾收集。