Computer >> Máy Tính >  >> Lập trình >> Java

Việc sử dụng lớp Cleaner trong Java 9 là gì?


Đối tượng đã được tạo trong quá trình thực thi chương trình sẽ tự động bị xóa bởi Trình thu gom rác (GC). Khi một đối tượng không được tham chiếu bởi bất kỳ luồng nào và khi JVM xác định rằng không thể truy cập đối tượng này, thì đối tượng đó có thể đủ điều kiện để thu gom rác.

Lớp Đối tượng có finalize () phương thức này được gọi tự động bởi GC trước khi nó cố gắng xóa đối tượng khỏi đống. Trong Java 9 , finalize () phương pháp đã không được dùng nữa và một lớp mới java.lang.ref.Cleaner được thêm vào quản lý thu gom rác. Một đối tượng của Cleaner lớp được thông báo tự động khi một đối tượng đủ điều kiện để thu gom rác. Đối tượng đang được thu gom rác cần được đăng ký với đối tượng sạch hơn bằng cách sử dụng register () phương pháp.

Ví dụ

import java.lang.ref.Cleaner;
public class CleanerTest {
   public static void main(String args[]) {
      System.out.println("TutorialsPoint");
      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");
      }
   }
}

Đầu ra

TutorialsPoint
Cleaning action