Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何定义析构函数?_Java_Oop_Destructor - Fatal编程技术网

Java 如何定义析构函数?

Java 如何定义析构函数?,java,oop,destructor,Java,Oop,Destructor,//在这段代码中,我应该定义构造函数和析构函数 定义析构函数的代码是什么 编写自己的方法并使用它。不建议重写finalize方法。在Java中,没有析构函数,但您可以使用该方法作为解决方法 Java编程语言不能保证哪个线程将 为任何给定对象调用finalize方法。有保证,, 但是,调用finalize的线程将不会保存任何 调用finalize时用户可见的同步锁定。如果 finalize方法引发未捕获异常,异常为 忽略该对象并终止该对象的终结 输出: 运行垃圾收集器。调用gc方法表明 Jav

//在这段代码中,我应该定义构造函数和析构函数

  • 定义析构函数的代码是什么

    • 编写自己的方法并使用它。不建议重写finalize方法。

      在Java中,没有析构函数,但您可以使用该方法作为解决方法

      Java编程语言不能保证哪个线程将 为任何给定对象调用finalize方法。有保证,, 但是,调用finalize的线程将不会保存任何 调用finalize时用户可见的同步锁定。如果 finalize方法引发未捕获异常,异常为 忽略该对象并终止该对象的终结

      输出:

      运行垃圾收集器。调用gc方法表明 Java虚拟机致力于在虚拟机中回收未使用的对象 以使其当前占用的内存可用于快速存储 重新使用当控件从方法调用返回时,Java虚拟 这台机器已经尽了最大的努力从所有被丢弃的机器中回收空间 对象

      call System.gc()实际上等同于调用:

      Runtime.getRuntime().gc()

      垃圾回收时由对象上的垃圾回收器调用 确定不再有对对象的引用。子类 重写finalize方法以处置系统资源或 执行其他清理


      你用的是什么语言?@justiniessner我用的是Java中没有析构函数可能是@ema的副本-假设Java中没有析构函数,我假设你的意思是覆盖
      finalize
      方法?请告诉我如何使用这个方法的代码我在它的主体中做什么System.gc()做什么?我看不到正在使用finalize()方法here@emagc()调用中的垃圾收集器java@AnkurAnand它只要求gc运行,而不是实际运行。在我自己的方法中,如果我只传递对象,它的引用将被销毁,而不是对象如果您有需要关闭的套接字之类的资源,您应该定义close方法并关闭套接字等,然后在释放指向对象的指针之前调用此方法。
          public class A {
      
          double wage;
      
          A(double wage){
          this.wage=wage;
          }
      
          }
      
      class Book {
        @Override
        public void finalize() {
          System.out.println("Book instance is getting destroyed");
        }
      }
      
      class Demo {
        public static void main(String[] args) {
          new Book();//note, its not referred by variable
          System.gc();//gc, won't run for such tiny object so forced clean-up
        }
      }
      
      Book instance is getting destroyed