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