This is from Whizlabs tutorial for the certificaton exam. I don't follow the explanation for the sample code. To me, there should be 1 object available for gc after line 4. Here's the code: Garbage collection Exercise page 5 of 5
How many objects will be eligible for garbage collection after line 7?
A. 0 B. 1 C. 2 D. 3 E. Code does not compile Correct choice:
Among the three objects created in lines 1, 2, and 3, only the Integer object is eligible for garbage collection at the end of line 7. The reference variable a, which originally referred to the Integer object is made to refer to the String object in line 5. So the Integer object is eligible for garbage collection after line 5, since there are no variables referring to it. The variables b and c refer to the String and Long objects in lines 6 and 7, so they are not eligible for garbage collection.
I thought that the Integer object would be available after line 4, when a is set to null. Am I wrong, or is the answer wrong?
[ January 08, 2005: Message edited by: Barry Gaunt ]
"I thought that the Integer object would be available after line 4, when a is set to null."
Yes, this is true. So it must be still garbage collectable after line 7 (if it has not been already collected). The other three objects the String literal "100" and the Long(100) and String("100") are still referred to. So the answer is correct (1 object) but their explanation has a glitch. [ January 08, 2005: Message edited by: Barry Gaunt ]