Java Programming - Garbage Collections - Discussion

Discussion Forum : Garbage Collections - General Questions (Q.No. 4)
4.
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?
After line 7
After line 8
After the start() method completes
When the instance running this code is made eligible for garbage collection.
Answer: Option
Explanation:

Option D is correct. By a process of elimination.

Option A is wrong. The variable d is a member of the Test class and is never directly set to null.

Option B is wrong. A copy of the variable d is set to null and not the actual variable d.

Option C is wrong. The variable d exists outside the start() method (it is a class member). So, when the start() method finishes the variable d still holds a reference.

Discussion:
12 comments Page 2 of 2.

Bishoy said:   1 decade ago
@Sr Dev.

The question is confusing that way, instead of saying "the Demo object" in the question, you have to define which object of the two you mean.

Sr Dev said:   1 decade ago
Instance of Demo which got created at line 12 is eligible for garbage collection after "takeDemo" method because the scope of the reference become out. So please review it and ask like "When will the the instance created at line 6 is eligible for Garbage Collection"


Post your comments here:

Your comments will be displayed after verification.