Java Training in Chennai – Garbage Collection Puzzles 

Here in this blog we are discussing about Java Training in Chennai – Garbage Collection Puzzles . Some of them are clearly discussed below :

_______________________________________________________________________________

Java Training in Chennai – Garbage Collection Puzzles

void start() { 

    A a = new A();

    B b = new B();

    a.s(b); 

    b = null; /* Line 5 */

    a = null;  /* Line 6 */

    System.out.println(“start completed”); /* Line 7 */

}

When is the B object, created in line 3, eligible for garbage collection?

 

class HappyGarbage01

{

    public static void main(String args[])

    {

        HappyGarbage01 h = new HappyGarbage01();

        h.methodA(); /* Line 6 */

    }

    Object methodA()

    {

        Object obj1 = new Object();

        Object [] obj2 = new Object[1];

        obj2[0] = obj1;

        obj1 = null;

        return obj2[0];

    }

}

Where will be the most chance of the garbage collector being invoked?

 

class Bar { }

class Test

    Bar doBar()

    {

        Bar b = new Bar(); /* Line 6 */

        return b; /* Line 7 */

    }

    public static void main (String args[])

    {

        Test t = new Test();  /* Line 11 */

        Bar newBar = t.doBar();  /* Line 12 */

        System.out.println(“newBar”);

        newBar = new Bar(); /* Line 14 */

        System.out.println(“finishing”); /* Line 15 */

    }

}

At what point is the Bar object, created on line 6, eligible for garbage collection?

 

public class Test

{

    public static void main(String[] args) throws InterruptedException

    {

        Test t = new Test();

        // making t eligible for garbage collection

        t = null;

        // calling garbage collector

        System.gc();

        // waiting for gc to complete

        Thread.sleep(1000);

        System.out.println(“end main”);

    }

     @Override

    protected void finalize()

    {

        System.out.println(“finalize method called”);

        System.out.println(10/0);

    }

 

}

 

public class Test

{

    static Test t ;

    static int count =0;

    public static void main(String[] args) throws InterruptedException

    {

        Test t1 = new Test();

        // making t1 eligible for garbage collection

        t1 = null; // line 12

        // calling garbage collector

        System.gc(); // line 15

        // waiting for gc to complete

        Thread.sleep(1000);

        // making t eligible for garbage collection,

        t = null; // line 21

        // calling garbage collector

        System.gc(); // line 24

 

        // waiting for gc to complete

        Thread.sleep(1000);

        System.out.println(“finalize method called “+count+” times”);

    }

    @Override

    protected void finalize()

    {

        count++;

        t = this; // line 38

    }

}

 

public class Test

{

    public static void main(String[] args)

    {

        // How many objects are eligible for

        // garbage collection after this line?

        m1();  // Line 5

    }

 

    static void m1()

    {

        Test t1 = new Test();

        Test t2 = new Test();

    }

}

How many objects are eligible for garbage collection after execution of line 5 ?

 

public class Test

{

    public static void main(String [] args)

    {

        Test t1 = new Test();

        Test t2 = m1(t1); // line 6

        Test t3 = new Test();

        t2 = t3; // line 8

 

    }

    static Test m1(Test temp)

    {

        temp = new Test();

        return temp;

    }

}

How many objects are eligible for garbage collection after execution of line 8?

 

class X2

{

    public X2 x;

    public static void main(String [] args)

    {

        X2 x2 = new X2();  /* Line 6 */

        X2 x3 = new X2();  /* Line 7 */

        x2.x = x3;

        x3.x = x2;

        x2 = new X2();

        x3 = x2; /* Line 11 */

        doComplexStuff();

    }

}

after line 11 runs, how many objects are eligible for garbage collection?

 

public Object m()

    Object o = new Float(3.14F);

    Object [] oa = new Object[l];

    oa[0] = o; /* Line 5 */

    o = null;  /* Line 6 */

    oa[0] = null; /* Line 7 */

    return o; /* Line 8 */

}

When is the Float object, created in line 3, eligible for garbage collection?

 

public class X

{

    public static void main(String [] args)

    {

        X x = new X();

        X x2 = m1(x); /* Line 6 */

        X x4 = new X();

        x2 = x4; /* Line 8 */

        doComplexStuff();

    }

    static X m1(X mx)

    {

        mx = new X();

        return mx;

    }

}

After line 8 runs. how many objects are eligible for garbage collection?

 

class Test

    private Demo d;

    void start()

    { 

        d = new Demo();

        this.takeDemo(d); /* Line 7 */

    } /* Line 8 */

    void takeDemo(Demo demo)

    {

        demo = null; 

        demo = new Demo();

    }

}

When is the Demo object eligible for garbage collection?

_______________________________________________________________________________________

References:

                             www.indiabix.com,  resume.mcalglobal.com,