2013-04-01 27 views
1

在Java中,当我们关闭像Connection这样的资源时,FileInputStream和FileOutputStream与将这些对象实例设置为null的方式不同?即在这两种情况下,这些对象都有资格进行垃圾收集。那么为这些类提供close方法的目的是什么?关闭FileInputStream并将其设置为null的区别

+1

许多在线教程/文章之一会回答这个问题。 –

+0

'#close()'不是垃圾收集。 http://docs.oracle.com/javase/7/docs/api/java/io/Closeable.html#close() –

+0

我想,如果你不关闭它,那么如果你尝试写再次打开在GC之前,您可能无法打开它,直到GC发生,因为操作系统认为该文件已打开。 – chuthan20

回答

0

IO类的close方法通常用于执行清理任务,例如,关闭文件处理程序,冲洗和关闭套接字。这些清理任务纯粹与分配无关,GC本身无法处理它们。

此外,一基准设定null显式声明该对象将不再被使用是不是推荐的编码实践。当物体不再可用时,GC将自动处理这些情况。明确的null设置只会混乱你的源代码。

相关问题