The String s = "hello"; s = null; is not garbage collected but String s = new String ("hello"); s = null; is garbage collected. Are these two declarations of String different ? I can't understand it! Could someone here help me?
Hi Tony, This topic has been discussed before. You might want to try searching on word combos like 'new' and 'garbage'. You'll probably get a broader discussion that way. Here is just one of the many discussions: http://www.javaranch.com/ubb/Forum24/HTML/002268.html Hope that helps, --Kelley
Originally posted by Tony Sam: [b]The String s = "hello"; s = null; is not garbage collected but String s = new String ("hello"); s = null; is garbage collected. Are these two declarations of String different ? I can't understand it! Could someone here help me?[/B]
furthermore,i saw a question like this: 1)From the following code how many objects are eligible for garbage collection? String string1 = "Test"; String string2 = "Today"; string1 = null; string1 = string2; A) 1 B) 2 C) 3 D) 0 i think it must be D), but the correct ans is A) , why??
Hi Tony, I believe that is because in line 3, string1 is set to null, so the literal "Test" is not being used anymore and then eligible for garbage collection. Anyone else??
Neha, Why wouldn't they? Don't string literals reference an instance of the String class? If they're a reference, then why wouldn't they gc'd? I'd like to hear what other people have to say as well. I could be totally wrong? I'm curious as this is a really good question.