首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么java中的finalize()方法不在Finalizer类中?为什么在对象类中定义它?

为什么java中的finalize()方法不在Finalizer类中?为什么在对象类中定义它?
EN

Stack Overflow用户
提问于 2015-08-03 01:14:02
回答 2查看 156关注 0票数 2

为什么java中的finalize()方法不在Finalizer类中?为什么在对象类中定义它?

EN

回答 2

Stack Overflow用户

发布于 2015-08-03 05:33:14

  1. "Finalizer“类,java.lang.ref.Finalizer和"finalizer()”方法,java.object.finalize是两个独立的,截然不同的东西。

您可以重写finalize() ...指定在垃圾回收器回收给定对象时要执行的操作。

  1. 这里讨论了“终结器类”的用途、角色和生命周期:

http://www.fasterj.com/articles/finalizer2.shtml

JVM将忽略一个简单的finalize()方法...否则,如果正在创建一个实例,且该实例定义或继承了一个重要的finalize()方法,则JVM将执行以下操作:

  • JVM将创建实例
  • JVM还将创建java.lang.ref.Finalizer类的实例,指向刚刚创建的对象实例(并指向将由GC放入的队列)
  • java.lang.ref.Finalizer类将保持刚创建的java.lang.ref.Finalizer实例(因此它将保持活动状态,否则将没有任何内容使其保持活动状态

下一次GC的GCed )。

为了回答你的问题:“cleanup).

  • For ()”是你要做的事情(在GC过程中自定义对象的清理行为);"Finalize“是JVM创建的对象(为了方便和管理这个终结器,有很多原因,包括performancesecurity,除非万不得已,否则创建自己的自定义终结器通常不是一个好主意。
票数 4
EN

Stack Overflow用户

发布于 2015-08-03 04:15:19

查看关于finalize()方法的javadoc

当垃圾回收确定不再有对对象的引用时,垃圾收集器对对象(该对象可以是任何对象,这就是为什么它在object类中而不是在终结器类中声明)调用的

您可以在任何类上覆盖方法,以指定当垃圾收集器收集给定对象时要执行的操作。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31774434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档