Search code examples
javagarbage-collection

In Java, when does an object become unreachable?


In Java, what is an unreachable object? When does the object become unreachable? While studying garbage collection I was not able to understand this concept.

Can anyone give any ideas with examples?


Solution

  • When there are no longer any reference variables referring to it, OR when it is orphaned in an island.

    An island being an object that has a reference variable pointing to it, however that object has no reference variables pointing to it.

    class A { int i = 5; }
    class B { A a = new A(); }
    class C {
       B b;
       public static void main(String args[]) {
          C c = new C();
          c.b = new B();
          // instance of A, B, and C created
          c.b = null;
          // instance of B and A eligible to be garbage collected.
       }
    

    EDIT: Just want to point out that even though the instance of A has a reference, it is on an island now because the instance of B does not have a reference to it. The A instance is eligible for garbage collection.