Java 9中Cleaner类的用途是什么?

在程序执行过程中创建的对象将由垃圾收集器 (GC)自动删除。当某个对象未被任何线程引用时,并且当JVM确定无法访问该对象时,则可以进行垃圾回收。

Object类具有finalize() 方法,在尝试从堆中删除对象之前,GC 将自动调用该方法。在Java 9中,已经不建议使用finalize()方法,并将新类java.lang.ref.Cleaner 添加到垃圾回收管理中。当对象可以进行垃圾回收时,Cleaner 类的对象会自动得到通知。需要通过使用register()方法向清理器对象注册正在垃圾回收的对象。

示例

import java.lang.ref.Cleaner;

public class CleanerTest {

   public static void main(String args[]) {

      System.out.println("nhooo");

      Cleaner cleaner = Cleaner.create();

      if(true) {

         CleanerTest myObject = new CleanerTest();

            cleaner.register(myObject, new State());    // register cleaner      }

      for(int i = 1; i <= 10000; i++) {

         String[] largeObject = new String[1000];

         try {

            Thread.sleep(1);

         } catch(InterruptedException e) {

              e.printStackTrace();

         }

      }

   }

   private static class State implements Runnable {

      public void run() {

         System.out.print("Cleaning action");

      }

   }

}

输出结果

nhooo

Cleaning action

以上是 Java 9中Cleaner类的用途是什么? 的全部内容, 来源链接: utcz.com/z/327155.html

回到顶部