프로그램 실행 중에 생성된 개체는 가비지 수집기 에 의해 자동으로 제거됩니다. (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