Java에서 객체 파괴는 다음에 의해 처리됩니다. 가비지 컬렉터 모듈과 이에 대한 참조가 없는 객체는 가비지 수집 대상입니다. Garbage Collector는 이러한 유형의 개체를 식별할 수 있습니다. 이제 고립의 섬이 정확히 무엇을 의미하는지 다음과 같이 논의해 보겠습니다.
- 개체 1은 개체 2를 참조하고 개체 2는 개체 1을 참조합니다. 개체 1이나 개체 2는 다른 개체에서 참조되지 않습니다. 그곳은 고립된 섬이다.
- 기본적으로 격리 섬은 서로를 참조하지만 애플리케이션의 활성 개체에서는 참조되지 않는 개체 그룹입니다. 엄밀히 말하면 참조되지 않은 단일 객체도 고립된 섬입니다.
예:
Java
// Java Program to Illustrate Island of Isolation // Main class public class GFG { GFG i; // Method 1 // Main driver method public static void main(String[] args) { // Creating object of class inside main() method GFG t1 = new GFG(); GFG t2 = new GFG(); // Object of t1 gets a copy of t2 t1.i = t2; // Object of t2 gets a copy of t1 t2.i = t1; // Till now no object eligible // for garbage collection t1 = null; // Now two objects are eligible for // garbage collection t2 = null; // Calling garbage collector System.gc(); } // Method 2 // overriding finalize() Method @Override protected void finalize() throws Throwable { // Print statement System.out.println('Finalize method called'); } }
산출:
출력 설명:
- 개체를 삭제하기 전에 Garbage Collector는 해당 개체에 대해 최대 한 번 finalize 메서드를 호출합니다. 위의 예에서 finalize() 메소드를 두 번 호출한 이유는 두 객체가 가비지 컬렉션 대상이기 때문입니다. 이는 t2=null을 실행한 후 t1 및 t2 개체에 대한 외부 참조가 없기 때문입니다.
- 우리가 가진 것은 서로에 대한 내부 참조(Test 클래스의 인스턴스 변수 i에 있음)뿐입니다. 두 개체의 인스턴스 변수를 호출할 수 있는 방법은 없습니다. 따라서 개체 중 어느 것도 다시 호출될 수 없습니다. ' t2.i = t1

- 두 객체 모두 외부 참조 t1과 t2를 갖습니다.
이제 두 개체 모두 다음과 같이 가비지 수집 대상이 됩니다. 우리가 그들에게 전화할 수 있는 방법은 없어 . 이는 다음과 같이 널리 알려져 있습니다. 고립의 섬.