자바의 고립섬

자바의 고립섬

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를 갖습니다.
  • t1 = 0 : 두 객체 모두 각각 t2.i 및 t2를 통해 도달할 수 있습니다. t2 = null: 어떤 물체에도 접근할 방법이 없습니다. 
     

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


인기 기사

범주

재미있는 기사