Question from MindQ 36. How many objects are eligible for garbage collection once execution has reached line labeled Line A String name; String newname = "Nick"; newname = "Jason"; name = "Frieda"; String newestName = name; name = null; //Line A a)0 b)1 c)2 d)3 e)4 I thought that the answer should be c)2 , but the answer given is b newname = "Nick"; becomes eligible for garbage collection once the statement newname = "Jason"; is executed and name = null; is the second object which is eligible So how come the answer is b) 1 Thanks, Srini
I would think the answer (b) given is right.. this is why You must know two most important points about GC . (1)Objects created on String pool are not gc'ed even though you assign null to them. (2) Objects created on heap are the only ones available for gc
Keeping this in mind let us analyze the code
Hence only one object is eligible for gc. That is the one created on heap. Hope it clears it!! -Sandeep Nachane
Actually here is why: String name; String newname = "Nick"; newname = "Jason"; /* The object "Nick" can no longerbe referenced.(No variable pointing to "Nick" string as newname now points to "Jason") Therefore at this point one String object eligible for GC-- "Nick". */ name = "Frieda"; String newestName = name; /* After the above statement, two handles point to the same object. Both newestName and name variables point to the String "Freida". */ name = null; /* In the above stmt, the name variable no longer points to the STring "Freida". But the newestName continues to point to the String " Freida" */ // Therefore, only one object is eligible for garbage collection. //and that is " Nick".