举报投诉联系我们 手机版 热门标签 编程学
您的位置:编程学 > java finalize方法 Java Object.Finalize方法

java finalize方法 Java Object.Finalize方法

2023-03-23 22:18 Java教程

java finalize方法 Java Object.Finalize方法

java finalize方法

Java finalize方法是一种特殊的方法,它可以在对象被垃圾回收器回收之前执行一些清理工作。它是Object类中的一个protected方法,可以被子类覆盖。finalize()方法只能被JVM调用,不能直接调用。

finalize()方法有两个重要的作用:

1. 在对象被垃圾回收之前释放系统资源(如文件描述符、数据库连接、socket连接)。 
2. 在对象失去引用时执行必要的通知功能。 

finalize()方法有一些限制:

 
1. finalize() 方法不能保证会执行,因为它取决于JVM的垃圾回收机制。 
2. finalize() 方法不能保证会在什么时间执行,也不能保证会在对象失去引用时立即执行。 
3. finalize() 方法只会执行一次,如果对象重新成功复生后将不会再执行 finalize() 方法。 
4. 如果 finalize() 方法中出现了异常或者死循环,将影响JVM的性能。 
5. 如果 finalize() 方法中耗时操作过多,将影响JVM的性能。 
6. 如果 finalize() 方法中使用了synchronized关键字将影响JVM的性能。 
7. 如果 finalize() 方法中使用了wait(), notify(), notifyAll(), sleep(), join(), yield(), park(), unpark() 等方法将影响JVM的性能。  

Java Object.Finalize方法

Java面向对象设计 - Java Object.Finalize方法


Java提供了一种在对象即将被销毁时执行资源释放的方法。

在Java中,我们创建对象,但是我们不能销毁对象。

JVM运行一个称为垃圾收集器的低优先级特殊任务来销毁不再引用的所有对象。

垃圾回收器给我们一个机会,在对象被销毁之前执行清理代码。

Object类有一个finalize()方法,声明如下:

protected void  finalize() throws   Throwable  {  }

Object类中的finalize()方法不会做任何事情。

你需要覆盖你的类中的方法。

您的类的finalize()方法将在您的类的对象销毁之前由垃圾回收器调用。

例子

以下代码显示了如何创建一个Finalize类覆盖对象类的finalize()方法。

class Finalize {
  private int x;

  public Finalize(int x) {
    this.x = x;
  }

  public void finalize() {
    System.out.println("Finalizing " + this.x);

  }
}

public class Main {
  public static void main(String[] args) {
    for (int i = 0; i < 20000; i++) {
      new Finalize(i);
    }
  }
}

上面的代码生成以下结果。



阅读全文
以上是编程学为你收集整理的java finalize方法 Java Object.Finalize方法全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 编程学 bianchengxue.com 版权所有 联系我们
桂ICP备19012293号-7 返回底部