我一直在阅读很多关于 Java 的菜鸟问题finalize()
,发现没有人真正明确说明 finalize() 是一种不可靠的资源清理方式,这有点令人困惑。我看到有人评论说他们用它来清理连接,这真的很可怕,因为接近保证连接已关闭的唯一方法是最终实现 try (catch)。
我没有受过 CS 教育,但我已经专业地使用 Java 编程近十年了,而且我从未见过有人finalize()
在生产系统中实现过。这仍然不意味着它没有它的用途,或者与我一起工作的人一直在做正确的事情。
所以我的问题是,有哪些用例finalize()
无法通过语言中的另一个进程或语法更可靠地处理?
请提供具体的场景或您的经验,只是重复 Java 教科书,或者 finalize 的预期用途是不够的,因为这不是这个问题的意图。