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

Java中的终结处理的目的是什么?

甄越
2023-03-14
问题内容

我对完成的理解是:

为了清理或回收对象占用的内存,垃圾回收器开始工作。(自动调用?)

然后,垃圾收集器取消引用该对象。有时,垃圾回收器无法访问该对象。然后,调用finalize进行最终清理处理,然后可以调用垃圾回收器。

这是对完成的准确描述吗?


问题答案:

垃圾收集器在后台自动运行(尽管可以显式调用它,但是对此的需求应该很少)。基本上,它仅清除未被其他对象引用的对象(当然,整个情况更为复杂,但这是基本思想)。因此,它不会更改任何活动对象中的任何引用。如果无法从任何活动对象访问对象,则意味着可以安全地对其进行垃圾回收

终结 为了清除对象获取的资源(不是内存,而是其他资源,例如文件句柄,端口,DB连接等)。但是,它并没有真正解决:-(

  • 何时finalize()会被调用是无法预测的
  • 实际上,并不能保证finalize()永远被调用!

因此,即使保证可以调用它,也不是释放资源的好地方:在调用它以释放您打开的所有数据库连接时,系统可能会完全耗尽可用的连接,并且您的应用不再可用。



 类似资料:
  • 问题内容: 引用,Sun的官方Java教程 仅当显式请求注释处理时,才接受类名“ HelloWorldApp” 这是什么意思?以及如何应用呢? 问题答案: “注释处理”是Java编译器编译过程的一个钩子,用于分析用户定义的注释的源代码并进行处理(通过产生编译器错误,编译器警告,发出源代码,字节代码…)。 API参考:http://java.sun.com/javase/6/docs/api/jav

  • 问题内容: 在Java中,方法用于流中。但是我不明白使用这种方法的全部目的是什么? 告诉我一些建议。 问题答案: 从该方法的文档中flush: 刷新输出流并强制写出所有缓冲的输出字节。刷新的一般约定是,调用它的指示是,如果先前写入的任何字节已由输出流的实现缓冲,则应立即将这些字节写入其预期的目标。

  • 问题内容: 我正在读一本关于Java的书,它说您可以将整个类声明为final。我想不出我会在哪里使用它。 我只是编程的新手,我想知道程序员是否真的在他们的程序上使用了它。如果他们这样做了,他们什么时候使用它,以便我可以更好地理解它,并知道何时使用它。 如果Java是面向对象的,并且您声明了一个类final,它是否会停止具有对象特征的类的想法? 问题答案: 如果他们这样做了,他们什么时候使用它,以便

  • 问题内容: 我在网上寻找了此信息,但找不到确切解释。我看到的是一个Java接口,它作为参数在另一个类中作为“侦听器”传递。人们将各种侦听器添加到列表中,并通过一种方法将它们全部调用。 我不确定为什么要使用它。有人可以解释吗? 这是我的原始帮助帖子,有人告诉我使用监听器。 链接 问题答案: 在您链接的代码示例中, 为您的API用户提供了一种告诉您这样的方式: 这是一段代码。杀死怪物时,请回叫它。我会

  • 问题内容: 我对 抽象类 及其使用有一些疑问。我了解有关它们的基础知识;例如,它们不能被实例化,它们可以具有具体和抽象的方法,…但是我想我想知道的是, 它们在生命中(在软件工程中)起什么作用? Java中抽象类的目的是什么?为什么和何时应该使用Abstract类?如果可以使用普通的类然后继承它,为什么还要继承一个抽象类?使用抽象类如何使我们的生活更轻松?它会提供更好的可维护性吗?更灵活?… 顺便说

  • 问题内容: 所以我正在学习Java,但是我有一个问题。看来,类型,并且将是只是我会永远需要的变量方面的一切,也许除外好时,需要在多个十进制数字都可以使用。 我的问题是,其他类型的如,,,等曾经在正常的日常编程中使用?这些可以用于哪些实际用途?它们的作用是什么? 问题答案: 除了“ short”(可能是对空间的浪费)之外,“ short”可能是一个例外-有时候,从字面上看,它们都是上课的动力: 当您