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

在完成过程中引用对象

魏风华
2023-03-14
问题内容

如果在完成调用期间保存对当前对象的引用,会发生什么情况?例如:

class foo {
    ...
    public void finalize() {
        bar.REFERENCE = this;
    }
}

对象是否被垃圾收集?稍后尝试访问时会发生什么bar.REFERENCE


问题答案:

该对象不是垃圾收集的。这就是所谓的“对象复活”。

您必须注意这一点,一旦终结器被称为gc,它将不会再次调用它,在.NET等某些环境中,您可以重新注册终结器,但是我不确定Java



 类似资料:
  • 我正在为一个已经存在的应用程序构建一个API,它有时会使用线程。所以我的方法是这样的 现在,方法可能会产生一个线程,但不一定。如果是这样,将执行其余代码,而新线程正在执行其他代码。我需要的是一种等待完成执行其所有子线程的方法,然后再进入下一行代码。我没有可能运行的线程的引用,因为这是基于用户的选择,所以我不能使用。我也不能编辑应用程序(或中发生的事情)。

  • 当前试图通过引用将对象传递给另一个线程,但在尝试构建解决方案时出错。 以下是错误: c: \程序文件(x86)\microsoft visual studio\2017\community\vc\tools\msvc\14.11.25503\include\thr\xthread(240):错误C2672:“std::invoke”:未找到匹配的重载函数1

  • 问题内容: 你们每个人都知道 JMM的 这一功能,有时对对象的引用可能 在 此对象的构造函数完成 之前 获得值。 在JLS7中,第4页。17.5 最终的字段语义 我们还可以阅读: 字段的使用模型很简单:在对象的构造函数中设置对象的字段; 并且不要在对象的构造函数完成之前,在另一个线程可以看到它的地方编写对正在构造的对象的引用 。如果执行此操作,则当另一个线程看到该对象时,该线程将始终看到该对象的字

  • 正在从其他模式访问表数据,并在oracle过程中插入到当前模式表中,但无法编译过程获得错误错误(5,27): PL/SQL: ORA-00942:表或视图不存在。 但当我直接从表中选择数据(在其他模式中)时,我能够获取数据,但不能在过程中获取数据。我也拥有所有必需的权限。 以下是程序。

  • 有时,当Tomcat已经运行了一段时间并且我终止了嵌入的Tomcat(Ctrl c)时,应用程序会引发以下异常: <代码>2019-10-17 10:23:10.704信息20020---[线程3]o.s.b.f.支持。DisposableBeanAdapter:在名为“entityManagerFactory”的bean上调用destroy方法失败:java。lang.BootstrapMeth

  • 问题内容: 我有一个创建两个或多个子流程的主流程,我想让主流程等到所有子流程完成操作并退出吗? 问题答案: 一个对象有这个确切定义的方法:等待一个给定的子进程的完成(和,此外,对于重新调整它的退出状态)。 如果使用此方法,则可以防止进程僵尸闲逛太久。 (或者,您可以使用或来进行调用和等待。如果您不需要该进程的IO,那可能就足够了。但这可能不是一个选择,因为您的两个子进程似乎应该并行运行,而他们不会