当前位置: 首页 > 面试题库 >

Java是否有析构函数?

盖和泰
2023-03-14
问题内容

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

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

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

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


问题答案:

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

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

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



 类似资料:
  • 问题内容: 我正在寻找一个内置Java函数,例如可以将其转换为。 像这样: 还是我必须手动搜索并替换所有转义字符? 问题答案: 您可以从Apache Commons Lang使用 。它适用于所有转义序列,包括Unicode字符(即)。 https://commons.apache.org/lang/apidocs/org/apache/commons/lang3/StringEscapeUtils

  • 问题内容: 我要寻找一个Java库与标准的Unix功能,即接口,,。 这曾经存在,并被称为。它于2000年发布。请参阅此公告。但是项目页面现在不见了。 如今,在Java中是否有现代替代这些类型的函数的功能?可以进行系统调用并解析输出,或者编写自定义JNI方法,但是这些方法比简单地使用旧库要有效得多。 澄清- 为了从C程序中找出文件的所有者,它应调用给出所有者的UID,然后用于从UID获取帐户的名称

  • 我正在学习C中的类,并且知道非静态成员函数具有隐式此参数。我的第一个问题是构造函数是否也像非静态成员函数一样具有隐式this参数。请注意,我不是在问我们是否可以在ctor中使用,因为我已经知道我们可以在ctor中使用。 接下来,我知道在类X的限定非静态成员函数中,这个函数的类型是const X*。对于非静态成员函数(无const限定),此的类型为X*。类似地,在ctor中,此的类型始终是X*。更深

  • 本文向大家介绍ElasticSearch是否有架构?相关面试题,主要包含被问及ElasticSearch是否有架构?时的应答技巧和注意事项,需要的朋友参考一下 ElasticSearch可以有一个架构。架构是描述文档类型以及如何处理文档的不同字段的一个或多个字段的描述。Elasticsearch中的架构是一种映射,它描述了JSON文档中的字段及其数据类型,以及它们应该如何在Lucene索引中进行索

  • 问题内容: 我不想为我的班级创建默认的构造函数。 但是Spring似乎坚持: 这真的有必要吗? 问题答案: 你是如何定义bean的?听起来你可能已经告诉Spring实例化你的bean,例如以下之一: 没有提供构造函数参数的地方。前一个将使用默认(或不使用arg)构造函数。如果要使用接受参数的构造函数,则需要使用如下元素来指定它们: 如果你想在你的应用程序上下文引用另一个bean中,你可以使用它做的

  • 问题内容: 我有两个类,和,扩展了前一个类。 具有以下构造函数: 我将注意到所有实例变量都已设置为private。 同时,具有以下构造函数: 但是,这为我的构造函数引发了“找不到符号”错误。 我尝试使用,但是我的超类的私有范围阻止了这种情况。 我发现向我的构造函数中添加字段并允许我调用超级构造函数,但是我想知道是否存在一种无需在子类构造函数中传递其所有参数的情况下调用超级构造函数的方法? 问题答案