java - 当GC可以释放所有连接时,为什么需要完成操作

我有一个对象。它打开了一个FileConnection
现在,我引用了对象null
然后GC [垃圾收集器]运行。
因此,GC将释放对象并关闭Object持有的FileConnection

那为什么我需要重写finalize方法呢?

最佳答案

您无需覆盖finalize方法。更好的是,完全忘记了finalize方法,不建议使用。

但是,您确实需要在处理完资源后立即将其关闭。 GC可能会将未使用的对象保留很长时间。如果依靠GC关闭系统资源,则操作系统级别的文件句柄,锁或套接字将用光。
这些资源有限。

本文翻译自 https://stackoverflow.com/questions/53881429/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。

标签 java io garbage-collection finalize


相关文章:

java - 在Akka中,从UntypedActor中访问配置参数的推荐方法是什么

java - 在Java数组中插入和反转元素

linux - 是否可以测量Linux进程的累积IO等待时间?

java - ReadableBytechannel.read始终返回-1

c# - 使用垃圾收集?

c# - 在Web服务中20分钟后计时器停止工作

java - 令人沮丧的ElementNotVisibleException错误

ruby - Ruby为什么没有真正的StringBuffer或StringIO?

c# - 跨C#和C ++ / CLI对象的垃圾收集

java - Java-管理上下文路径