Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java 9에서 Cleaner 클래스의 용도는 무엇입니까?


프로그램 실행 중에 생성된 개체는 가비지 수집기 에 의해 자동으로 제거됩니다. (GC). 어떤 스레드에서도 개체를 참조하지 않고 JVM에서 이 개체에 액세스할 수 없다고 판단하면 가비지 수집 대상이 될 수 있습니다.

Object 클래스에는 finalize() 가 있습니다. GC 에 의해 자동으로 호출되는 메소드 힙에서 개체를 제거하려고 시도하기 전에 자바 9에서 , finalize() 메소드가 사용 중단되었습니다. 및 새 클래스 java.lang.ref.Cleaner 가비지 컬렉션 관리에 추가되었습니다. 청소기 의 개체 객체가 가비지 수집에 적합하게 되면 클래스에 자동으로 알림이 전송됩니다. 가비지 수집 중인 개체는 청소기 개체에 등록해야 합니다. register()를 사용하여 방법.

예시

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");
      }
   }
}

출력

TutorialsPoint
Cleaning action