是否有Java的析构函数?

问题:

是否有Java的析构函数?我似乎无法找到任何文档。如果没有,怎么能达到同样的效果?
为了使我的问题更具体,我正在编写一个处理数据的应用程序,规范说应该有一个“重置”按钮,使应用程序恢复到刚刚启动的状态。但是,除非应用程序关闭或重置按钮被按下,否则所有数据都必须为“实时”。
通常是一个C / C ++程序员,我认为这将是微不足道的实现。 (因此我计划最后实现它)。我构建了我的程序,使所有的“可重置”对象将在同一个类中,以便我可以在重置按钮被按下时销毁所有的“活动”对象。
我在想,如果我所做的只是要取消引用数据,等待垃圾收集器收集它们,如果我的用户重复输入数据并按下重置按钮,那么是不会有内存泄漏?我也在想,由于Java作为一种语言已经相当成熟,应该有一种方法可以防止这种情况的发生或者正确地处理这个问题。

回答:

因为Java是一种垃圾回收语言,所以您无法预测何时(甚至是)对象将被销毁。因此,没有直接的等同于析构函数。
有一种称为finalize的继承方法,但完全由垃圾回收器自行决定。因此,对于需要明确整理的类,约定是定义一个close方法,并使用finalize来进行理性检查(即如果close尚未被调用,现在就记录一个错误)。
最近有a question that spawned in-depth discussion of finalize,所以如果需要,应该提供更多的深度…

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Is there a destructor for Java?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

9 + 1 =