【发布时间】:2017-03-28 04:44:52
【问题描述】:
我知道它是为了资源而运作的。 但是如果没有检测到进一步的使用,它不会像其他对象一样自动关闭吗? 出于同样的原因,我从不解构单个对象,这是一个坏习惯吗? 非常感谢。
【问题讨论】:
-
如果它被垃圾回收(实际上不是 Scanner,因为它没有实现
finalize,但FileInputStream实现),它将被关闭,当需要比当前可用的更多内存时会发生这种情况。如果你有很多内存,那可能会在你用完可用的文件描述符之后很久很久。 -
垃圾收集可能永远不会发生。您不得依赖 GC 为您释放资源。 @yshavit 确实,这是一个非常严重的错误,我正在重新评论。