Garbage Collections

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 */
        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?

A after line 7, when doBar() completes

B after line 14

C after line 12

D after line 15, when main() completes

ANS:A - after line 12

Option B is correct. All references to the Bar object created on line 6 are destroyed when a new reference to a new Bar object is assigned to the variable newBar on line 14. Therefore the Bar object, created on line 6, is eligible for garbage collection after line 14. Option A is wrong. This actually protects the object from garbage collection. Option C is wrong. Because the reference in the doBar() method is returned on line 7 and is stored in newBar on line 12. This preserver the object created on line 6. Option D is wrong. Not applicable because the object is eligible for garbage collection after line 14.

img not found

For help Students Orientation
Mcqs Questions

One stop destination for examination, preparation, recruitment, and more. Specially designed online test to solve all your preparation worries. Go wherever you want to and practice whenever you want, using the online test platform.