【发布时间】:2013-09-11 07:32:44
【问题描述】:
我不明白。例如,我们在代码中有一个 OutputStream 类型的变量,我们应该在停止使用它时调用 close() ,这就是为什么它没有以这种方式实现的原因:GC 在清理时调用 close() 本身这个变量?
更新: 好的,到目前为止我的结论是:释放非托管资源不仅是释放内存,更重要的是我们现在不知道它背后的内部行为,它可能存在对此资源数量的限制(连接/处理程序的数量)这就是为什么我们需要尽快释放他们。我对吗?因为如果这一切都与内存有关,那么我不知道为什么 GC 不能像管理资源那样完成这项工作。
【问题讨论】:
-
大多数流都实现了 finalize 会调用 close,但是没有保证会调用 finalize。当你知道你已经完成了它们时关闭你的流/阅读器是个好习惯
-
关于你的更新:确切地说,它不是关于内存,而是关于 JVM 外部的东西。
标签: java garbage-collection unmanaged resource-cleanup