我应该在java中使用finalize()吗?

Des*_*tor 5 java

为什么finalize()在Java 中根本不能保证执行?是finalize()不是应该使用方法???

考虑下面的程序.

class Test{
   protected void finalize()
   {
       System.out.println("Will i execute?");
   }
   public static void main(String args[])
   {
         Test t=new Test();
   }
}
Run Code Online (Sandbox Code Playgroud)

该程序运行时有一个空输出.我们知道finalize()在对象符合垃圾收集条件之前用于清理任何外部资源,并且finalize()将由JVM调用.在内部,finalize()我们将指定在销毁对象之前必须执行的操作.是finalize()方法邪?

The*_*ind 3

finalize()当垃圾收集确定不再有对该对象的引用时,由垃圾收集器在该对象上调用。。

您可以使用System.gc()显式调用垃圾收集并检查您的语句是否被打印。但是 JVM 可以自由地忽略您的请求(实际上取决于 JVM 实现......)。只有当JVM的内部状态告诉它垃圾太多并且需要收集时,它才会运行GC(并且该行将我执行)才会被打印。