public class A{ public static void main(String[] args) { test a = new test("obj1"); test b = new test("obj2"); test c = new test("obj3"); a.aob = b; b.aob = a; c.aob = a.aob; test d=new test("obj4").aob = new test("obj5"); c=b; c.aob = null; System.gc();
Hi all, please ignore the first post. I had accidentally keyed wrongly. Here i am,
public class A{ public static void main(String[] args) { A a = new A(); A b = new A(); A c = A(); a.aob = b; //line 6 b.aob = a;//line 7 c.aob = a.aob; //line 8 A d=new A().aob = new A(); //line 9 c=b; //line 10 c.aob = null; //line 11 System.gc(); } }
How many objects are eligible for GC after executing statement "c.aob=null"?
The answer is 2.
Here my drawing,
a -> A (obj1) b -> A (obj2) c -> A (obj3)
then a -> A (obj1) -> A (obj2) //line 6 b -> A (obj2) -> A (obj1) //line 7 c -> A (obj3) -> A (obj2) //line 8
public test(String name){ this.sName = name; } public static void main(String[] args) { test a = new test("obj1"); test b = new test("obj2"); test c = new test("obj3"); a.aob = b; b.aob = a; c.aob = a.aob; test d=new test("obj4").aob = new test("obj5"); c=b; c.aob = null; System.gc();
} public void finalize(){ System.out.println("finalize called for: "+sName); } }
The output is : finalize called for: obj4 finalize called for: obj3
I am puzzling with obj4. Anyone know? Kindly please help.