一尘不染

Java是否有析构函数?

java

Java是否有析构函数?我似乎找不到关于此的任何文档。如果没有,我怎么能达到同样的效果?

为了使我的问题更具体,我正在编写一个处理数据的应用程序,规范中说应该有一个“重置”按钮,以将应用程序恢复为最初的启动状态。但是,除非关闭应用程序或按下重置按钮,否则所有数据都必须是“实时”的。

作为通常的C / C ++程序员,我认为这将是微不足道的。(因此,我计划最后实现它。)我对程序进行了结构设计,以使所有“可重置”对象都位于同一类中,以便在按下重置按钮时可以销毁所有“活动”对象。

我在想,如果我只是想取消引用数据并等待垃圾收集器来收集它们,如果我的用户重复输入数据并按下“重置”按钮,会不会发生内存泄漏?我也在想,因为Java作为一种语言已经相当成熟,所以应该有一种方法可以防止这种情况的发生或妥善解决。


阅读 2081

收藏
2020-03-03

共1个答案

一尘不染

因为Java是一种垃圾收集语言,所以你无法预测何时(或什至)一个对象将被销毁。因此,没有析构函数的直接等效项。

有一个称为的继承方法finalize,但这完全由垃圾收集器决定调用。因此,对于需要显式整理的类,约定是定义一个close方法并仅将finalize用于完整性检查(即,如果尚未调用close,请立即执行并记录错误)。

最近有一个问题引发了对定稿的深入讨论,因此如果需要的话应该提供更多的深度…

2020-03-03