当前位置: 首页 > 知识库问答 >
问题:

在Java中如何将对象标记为finalized(这样finalize方法就不会被第二次调用)?

龚联
2023-03-14

共有1个答案

孟豪
2023-03-14

只要我们讨论热点JVM...

对象本身没有标记为已完成。

每次创建新的finalize对象时,JVM都会创建一个额外的对象FinalizerRef(与弱/soft/phantom引用有点类似)。

 类似资料:
  • 问题内容: 主要问题在主题中,但是让我展示一下我对Java终结处理的看法,以便我可以再问您一点。 gc通过标记所有活动对象开始垃圾收集。当所有可到达的对象都标记为“活动”时。所有其他对象均不可访问。下一步是检查每个无法到达的对象,并确定是否可以立即将其清除或应首先完成。 如果对象的finalize方法具有主体,则gc会考虑采用另一种方法,然后将此对象终结并应终结。 如果对象的finalize方法的

  • 在下面的代码中,我创建了电影类的3个实例。我已经为这三个对象分配了一些数据。其次,我创建了对对象movie1(movie4)的第二个引用。我还为电影4的属性赋值。我打印了电影1的新属性,但内容没有改变。为什么会发生这种情况?确切的原因是什么?我知道更新内容的其他方法,但我想知道为什么第二次引用不起作用 内容是movie1,但仍然相同。为什么?

  • 在ASP中引入了调用视图组件作为标记助手。NET内核1.1。(请参阅“将视图组件作为标记辅助对象调用”)。但是下面只返回视图中VC部分的测试。似乎

  • 第一个函数只是从映射中读取并返回值(可以是或无效),而第二个函数将该值转换为LogLevel,并在没有给出有效值时返回默认值。 因此,我不想让程序员使用泛型的,但是在特殊情况下,这个方法很有用,所以我不能仅仅保护它。现在我使用,但我认为这不是一个好的解决方案,因为它只是用于将来要删除的方法。(如果我错了,请纠正我,这就是SonarLint告诉我的@deprecated注释)

  • 我们最近将消息处理应用程序从Java7升级到Java8。自升级以来,我们偶尔会发现一个异常,即在读取流时,流已被关闭。日志记录显示终结器线程正在对保存流的对象调用(这反过来会关闭流)。 守则的基本大纲如下: 和是自制的MIME/HTTP库的一部分。扩展,它具有以下特性: 异常发生在的调用链中,如下所示: 写入部件的标题,然后调用 调用我们的实用工具方法将内容流式传输到输出 只返回传入contstr

  • 问题内容: 我需要知道何时在中调用该方法。我创建了一个测试类,该法通过覆盖该方法来在调用该方法时将其写入文件。它不执行。谁能告诉我它为什么不执行的原因? 问题答案: 通常,最好不要依赖进行任何清理等工作。 根据Javadoc(值得阅读),它是: 当垃圾回收确定不再有对该对象的引用时,由垃圾回收器在对象上调用。 正如Joachim指出的那样,如果对象始终是可访问的,则在程序生命中可能永远不会发生这种