当您在OutputStream / InputStream对象的对象引用上调用close()
方法时,对象引用是否指向null?或者我们是否需要将其显式设置为null以使对象内存可用于GC?
答案 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)
没有必要使流无效,一旦流关闭并超出范围,流就会自动标记为垃圾收集。