Java有析构函数吗?我似乎无法找到任何关于此的文档。如果没有,我怎样才能达到同样的效果?
为了让我的问题更具体,我正在编写一个处理数据的应用程序,规范说应该有一个“重置”按钮,使应用程序恢复到其最初的刚启动状态。但是,除非关闭应用程序或按下重置按钮,否则所有数据都必须是“实时”的。
通常作为 C/C++ 程序员,我认为这实现起来很简单。 (因此我计划最后实现它。)我构建了我的程序,使所有“可重置”对象都在同一个类中,这样我就可以在按下重置按钮时销毁所有“活动”对象。
我在想如果我所做的只是取消引用数据并等待垃圾收集器收集它们,如果我的用户重复输入数据并按下重置按钮会不会出现内存泄漏?我也在想,既然 Java 作为一种语言已经相当成熟,应该有一种方法来防止这种情况发生或优雅地解决这种情况。
原文由 wai 发布,翻译遵循 CC BY-SA 4.0 许可协议
因为 Java 是一种垃圾收集语言,您无法预测对象何时(甚至是否)会被销毁。因此,没有析构函数的直接等价物。
有一个名为
finalize
的继承方法,但这完全由垃圾收集器决定是否调用。因此,对于需要显式整理的类,惯例是定义一个 关闭 方法并仅使用 finalize 进行完整性检查(即,如果尚未调用 _关闭_,则立即调用并记录错误)。最近有 一个问题引发了对 finalize 的深入讨论,因此如果需要,应该提供更深入的讨论……