在这篇教程中,我们将讨论 Java 尝试通过 Java 18 版本中的 JEP 421 废弃 Object 最终化的原因。我们还将讨论最终化的潜在替代品和更好的替代方案。
2.1. 资源泄漏
JVM 配备了垃圾收集(GC)机制,用于回收应用程序不再使用的对象的内存,或者没有更多引用指向该对象。然而,一些对象引用使用并代表其他底层资源,如操作系统级别的资源、本地内存块和打开的文件描述符。这些对象在关闭时应调用 close() 方法,以将底层资源释放回操作系统。
如果 GC 在对象有机会调用 close() 之前过早地清理了对象,操作系统就会认为该对象仍在使用中。这就是资源泄漏。
大约 8 分钟