"안녕하세요. 오늘은 finalize () 메소드에 대해 간단히 알아보도록 하겠습니다. Java Virtual Machine은 객체를 소멸시키기 전에 finalize () 메소드를 호출합니다. 이 메소드는 시스템 리소스 할당을 해제하거나 기타 정리 작업을 수행하는 데 사용됩니다. 사실 이 메소드는 메서드는 Java의 생성자와 정반대입니다. 생성자가 개체를 만드는 데 사용된다는 것을 기억할 것입니다."
"Object 클래스에는 finalize () 메서드가 있습니다. 즉, 다른 모든 클래스도 마찬가지입니다( 모든 Java 클래스는 Object 클래스에서 파생되기 때문입니다 ). 클래스에서 고유한 finalize () 메서드를 간단히 구현할 수 있습니다 ."
"다음은 예입니다."
예:
class Cat
{
String name;
Cat(String name)
{
this.name = name;
}
protected void finalize() throws Throwable
{
System.out.println(name + " has been destroyed");
}
}
"말이 되네요, 엘리."
"하지만 Java Virtual Machine이 이 메서드를 호출할지 여부를 결정한다는 점을 알아야 합니다 . 메서드 내부에서 생성되고 메서드가 완료될 때 쓰레기로 선언된 객체는 finalize ()를 호출하지 않고 즉시 소멸되는 경우가 많습니다 . 이 메서드는 그 이상입니다 . 신뢰할 수 있는 솔루션보다 백업과 같은 것입니다. 가장 좋은 옵션은 객체가 아직 살아있는 동안 모든 시스템 리소스를 해제하는 것입니다(다른 객체에 대한 참조를 null로 설정하여). 이 방법의 장점과 뉘앙스는 나중에 자세히 말씀드리겠습니다. , 두 가지만 이해하면 됩니다. 이러한 메서드가 있고 ( 놀랍게도! ) 항상 호출되는 것은 아닙니다."
GO TO FULL VERSION