在我的代码中,只要需要 FileInputStream
作为参数,我就会这样做:
new obj(new FileInputStream(fileLocation));
因为我没有将 FileInputStream
分配给任何引用变量,所以我没有使用 close()
方法关闭它。
这会导致内存泄漏吗?
不是上面的方法中FileInputStream
释放资源吗?
最佳答案
如果没有对您的输入流的引用,它将被垃圾收集并自动关闭流 - 请参见 FileInputStream.finalize()
方法。但是,这不是一个好的编程习惯,因为您不知道何时会发生垃圾回收。所以这可能会导致内存泄漏。
正确且更安全的方法是将 try 与资源 block 一起使用,或者在较旧的 Java 版本中使用 try-catch-finally,您在 finally block 中关闭流 - 我个人喜欢 Apache Commons 的 IOUtils,您不必关心关于 close()
方法抛出的 IOException
关于java - FileInputStream 和关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31832376/